﻿/*
 * FCKeditor - The text editor for internet Copyright (C) 2003-2006 Frederico
 * Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit: http://www.fckeditor.net/
 * 
 * "Support Open Source software. What about a donation today?"
 * 
 * This file has been compacted for best loading performance.
 */
var FCK_STATUS_NOTLOADED = window.parent.FCK_STATUS_NOTLOADED = 0;
var FCK_STATUS_ACTIVE = window.parent.FCK_STATUS_ACTIVE = 1;
var FCK_STATUS_COMPLETE = window.parent.FCK_STATUS_COMPLETE = 2;
var FCK_TRISTATE_OFF = window.parent.FCK_TRISTATE_OFF = 0;
var FCK_TRISTATE_ON = window.parent.FCK_TRISTATE_ON = 1;
var FCK_TRISTATE_DISABLED = window.parent.FCK_TRISTATE_DISABLED = -1;
var FCK_UNKNOWN = window.parent.FCK_UNKNOWN = -9;
var FCK_TOOLBARITEM_ONLYICON = window.parent.FCK_TOOLBARITEM_ONLYICON = 0;
var FCK_TOOLBARITEM_ONLYTEXT = window.parent.FCK_TOOLBARITEM_ONLYTEXT = 1;
var FCK_TOOLBARITEM_ICONTEXT = window.parent.FCK_TOOLBARITEM_ICONTEXT = 2;
var FCK_EDITMODE_WYSIWYG = window.parent.FCK_EDITMODE_WYSIWYG = 0;
var FCK_EDITMODE_SOURCE = window.parent.FCK_EDITMODE_SOURCE = 1;
var FCK_IMAGES_PATH = 'images/';
var FCK_SPACER_PATH = 'images/spacer.gif';
String.prototype.Contains = function(A) {
	return (this.indexOf(A) > -1);
};
String.prototype.Equals = function() {
	for (var i = 0; i < arguments.length; i++)
		if (this == arguments[i])
			return true;
	return false;
};
String.prototype.ReplaceAll = function(A, B) {
	var C = this;
	for (var i = 0; i < A.length; i++) {
		C = C.replace(A[i], B[i]);
	};
	return C;
};
Array.prototype.AddItem = function(A) {
	var i = this.length;
	this[i] = A;
	return i;
};
Array.prototype.indexOf = function(A) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == A)
			return i;
	};
	return -1;
};
String.prototype.startsWith = function(A) {
	return (this.substr(0, A.length) == A);
};
String.prototype.endsWith = function(A, B) {
	var C = this.length;
	var D = A.length;
	if (D > C)
		return false;
	if (B) {
		var E = new RegExp(A + '$', 'i');
		return E.test(this);
	} else
		return (D == 0 || this.substr(C - D, D) == A);
};
String.prototype.remove = function(A, B) {
	var s = '';
	if (A > 0)
		s = this.substring(0, A);
	if (A + B < this.length)
		s += this.substring(A + B, this.length);
	return s;
};
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, '');
};
String.prototype.ltrim = function() {
	return this.replace(/^\s*/g, '');
};
String.prototype.rtrim = function() {
	return this.replace(/\s*$/g, '');
};
String.prototype.replaceNewLineChars = function(A) {
	return this.replace(/\n/g, A);
}
var FCKIECleanup = function(A) {
	this.Items = new Array();
	A._FCKCleanupObj = this;
	A.attachEvent('onunload', FCKIECleanup_Cleanup);
};
FCKIECleanup.prototype.AddItem = function(A, B) {
	this.Items.push([A, B]);
};
function FCKIECleanup_Cleanup() {
	var aItems = this._FCKCleanupObj.Items;
	var iLenght = aItems.length;
	for (var i = 0; i < iLenght; i++) {
		var oItem = aItems[i];
		oItem[1].call(oItem[0]);
		aItems[i] = null;
	};
	this._FCKCleanupObj = null;
	if (CollectGarbage)
		CollectGarbage();
}
var s = navigator.userAgent.toLowerCase();
var FCKBrowserInfo = {
	IsIE : s.Contains('msie'),
	IsIE7 : s.Contains('msie 7'),
	IsGecko : s.Contains('gecko/'),
	IsSafari : s.Contains('safari'),
	IsOpera : s.Contains('opera')
};
FCKBrowserInfo.IsGeckoLike = FCKBrowserInfo.IsGecko || FCKBrowserInfo.IsSafari
		|| FCKBrowserInfo.IsOpera;
if (FCKBrowserInfo.IsGecko) {
	var sGeckoVersion = s.match(/gecko\/(\d+)/)[1];
	FCKBrowserInfo.IsGecko10 = sGeckoVersion < 20051111;
}
var FCKURLParams = new Object();
var aParams = document.location.search.substr(1).split('&');
for (var i = 0; i < aParams.length; i++) {
	var aParam = aParams[i].split('=');
	var sParamName = aParam[0];
	var sParamValue = aParam[1];
	FCKURLParams[sParamName] = sParamValue;
}
var FCK = new Object();
FCK.Name = FCKURLParams['InstanceName'];
FCK.Status = FCK_STATUS_NOTLOADED;
FCK.EditMode = FCK_EDITMODE_WYSIWYG;
FCK.LoadLinkedFile = function() {
	var A = window.parent.document;
	var B = A.getElementById(FCK.Name);
	var C = A.getElementsByName(FCK.Name);
	var i = 0;
	while (B || i == 0) {
		if (B
				&& (B.tagName.toLowerCase() == 'input' || B.tagName
						.toLowerCase() == 'textarea')) {
			FCK.LinkedField = B;
			break;
		};
		B = C[i++];
	}
};
FCK.LoadLinkedFile();
var FCKTempBin = new Object();
FCKTempBin.Elements = new Array();
FCKTempBin.AddElement = function(A) {
	var B = this.Elements.length;
	this.Elements[B] = A;
	return B;
};
FCKTempBin.RemoveElement = function(A) {
	var e = this.Elements[A];
	this.Elements[A] = null;
	return e;
};
FCKTempBin.Reset = function() {
	var i = 0;
	while (i < this.Elements.length)
		this.Elements[i++] == null;
	this.Elements.length = 0;
}
var FCKConfig = FCK.Config = new Object();
if (document.location.protocol == 'file:') {
	FCKConfig.BasePath = unescape(document.location.pathname.substr(1));
	FCKConfig.BasePath = FCKConfig.BasePath.replace(/\\/gi, '/');
	FCKConfig.BasePath = 'file://'
			+ FCKConfig.BasePath.substring(0, FCKConfig.BasePath
							.lastIndexOf('/')
							+ 1);
	FCKConfig.FullBasePath = FCKConfig.BasePath;
} else {
	FCKConfig.BasePath = document.location.pathname.substring(0,
			document.location.pathname.lastIndexOf('/') + 1);
	FCKConfig.FullBasePath = document.location.protocol + '//'
			+ document.location.host + FCKConfig.BasePath;
};
FCKConfig.EditorPath = FCKConfig.BasePath.replace(/editor\/$/, '');
try {
	FCKConfig.ScreenWidth = screen.width;
	FCKConfig.ScreenHeight = screen.height;
} catch (e) {
	FCKConfig.ScreenWidth = 800;
	FCKConfig.ScreenHeight = 600;
};
FCKConfig.ProcessHiddenField = function() {
	this.PageConfig = new Object();
	var A = window.parent.document.getElementById(FCK.Name + '___Config');
	if (!A)
		return;
	var B = A.value.split('&');
	for (var i = 0; i < B.length; i++) {
		if (B[i].length == 0)
			continue;
		var C = B[i].split('=');
		var D = unescape(C[0]);
		var E = unescape(C[1]);
		if (D == 'CustomConfigurationsPath')
			FCKConfig[D] = E;
		else if (E.toLowerCase() == "true")
			this.PageConfig[D] = true;
		else if (E.toLowerCase() == "false")
			this.PageConfig[D] = false;
		else if (E.length > 0 && !isNaN(E))
			this.PageConfig[D] = parseInt(E);
		else
			this.PageConfig[D] = E;
	}
};
function FCKConfig_LoadPageConfig() {
	var oPageConfig = FCKConfig.PageConfig;
	for (var sKey in oPageConfig)
		FCKConfig[sKey] = oPageConfig[sKey];
};
function FCKConfig_PreProcess() {
	var oConfig = FCKConfig;
	if (oConfig.AllowQueryStringDebug) {
		try {
			if ((/fckdebug=true/i).test(window.top.location.search))
				oConfig.Debug = true;
		} catch (e) { /*
						 * Ignore it. Much probably we are inside a FRAME where
						 * the "top" is in another domain (security error).
						 */
		}
	};
	if (!oConfig.PluginsPath.endsWith('/'))
		oConfig.PluginsPath += '/';
	if (typeof(oConfig.EditorAreaCSS) == 'string')
		oConfig.EditorAreaCSS = [oConfig.EditorAreaCSS];
	var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS;
	if (!sComboPreviewCSS || sComboPreviewCSS.length == 0)
		oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS;
	else if (typeof(sComboPreviewCSS) == 'string')
		oConfig.ToolbarComboPreviewCSS = [sComboPreviewCSS];
};
FCKConfig.ToolbarSets = new Object();
FCKConfig.Plugins = new Object();
FCKConfig.Plugins.Items = new Array();
FCKConfig.Plugins.Add = function(A, B, C) {
	FCKConfig.Plugins.Items.AddItem([A, B, C]);
};
FCKConfig.ProtectedSource = new Object();
FCKConfig.ProtectedSource.RegexEntries = [/<!--[\s\S]*?-->/g,
		/<script[\s\S]*?<\/script>/gi, /<noscript[\s\S]*?<\/noscript>/gi];
FCKConfig.ProtectedSource.Add = function(A) {
	this.RegexEntries.AddItem(A);
};
FCKConfig.ProtectedSource.Protect = function(A) {
	function _Replace(protectedSource) {
		var B = FCKTempBin.AddElement(protectedSource);
		return '<!--{PS..' + B + '}-->';
	};
	for (var i = 0; i < this.RegexEntries.length; i++) {
		A = A.replace(this.RegexEntries[i], _Replace);
	};
	return A;
};
FCKConfig.ProtectedSource.Revert = function(A, B) {
	function _Replace(m, opener, index) {
		var C = B
				? FCKTempBin.RemoveElement(index)
				: FCKTempBin.Elements[index];
		return FCKConfig.ProtectedSource.Revert(C, B);
	};
	return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g, _Replace);
}
var FCKDebug = new Object();
FCKDebug.Output = function(A, B, C) {
	if (!FCKConfig.Debug)
		return;
	if (!C && A != null && isNaN(A))
		A = A.replace(/</g, "&lt;");
	if (!this.DebugWindow || this.DebugWindow.closed)
		this.DebugWindow = window
				.open(
						FCKConfig.BasePath + 'fckdebug.html',
						'FCKeditorDebug',
						'menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',
						true);
	if (this.DebugWindow && this.DebugWindow.Output) {
		try {
			this.DebugWindow.Output(A, B);
		} catch (e) {
		}
	}
};
FCKDebug.OutputObject = function(A, B) {
	if (!FCKConfig.Debug)
		return;
	var C;
	if (A != null) {
		C = 'Properties of: ' + A + '</b><blockquote>';
		for (var D in A) {
			try {
				var E = A[D] ? A[D] + '' : '[null]';
				C += '<b>' + D + '</b> : ' + E.replace(/</g, '&lt;') + '<br>';
			} catch (e) {
				try {
					C += '<b>' + D + '</b> : [' + typeof(A[D]) + ']<br>';
				} catch (e) {
					C += '<b>' + D + '</b> : [-error-]<br>';
				}
			}
		};
		C += '</blockquote><b>';
	} else
		C = 'OutputObject : Object is "null".';
	FCKDebug.Output(C, B, true);
}
var FCKTools = new Object();
FCKTools.AppendStyleSheet = function(A, B) {
	if (typeof(B) == 'string')
		return this._AppendStyleSheet(A, B);
	else {
		for (var i = 0; i < B.length; i++)
			this._AppendStyleSheet(A, B[i]);
	}
};
FCKTools.GetLinkedFieldValue = function() {
	return FCK.LinkedField.value;
};
FCKTools.AttachToLinkedFieldFormSubmit = function(A) {
	var B = FCK.LinkedField.form;
	if (!B)
		return;
	if (FCKBrowserInfo.IsIE)
		B.attachEvent("onsubmit", A);
	else
		B.addEventListener('submit', A, false);
	if (!B.updateFCKeditor)
		B.updateFCKeditor = new Array();
	B.updateFCKeditor[B.updateFCKeditor.length] = A;
	if (!B.originalSubmit
			&& (typeof(B.submit) == 'function' || (!B.submit.tagName && !B.submit.length))) {
		B.originalSubmit = B.submit;
		B.submit = FCKTools_SubmitReplacer;
	}
};
function FCKTools_SubmitReplacer() {
	if (this.updateFCKeditor) {
		for (var i = 0; i < this.updateFCKeditor.length; i++)
			this.updateFCKeditor[i]();
	};
	this.originalSubmit();
};
FCKTools.GetElementWindow = function(A) {
	return this.GetDocumentWindow(this.GetElementDocument(A));
};
FCKTools.GetDocumentWindow = function(A) {
	if (FCKBrowserInfo.IsSafari && !A.parentWindow)
		this.FixDocumentParentWindow(window.top);
	return A.parentWindow || A.defaultView;
};
FCKTools.FixDocumentParentWindow = function(A) {
	A.document.parentWindow = A;
	for (var i = 0; i < A.frames.length; i++)
		FCKTools.FixDocumentParentWindow(A.frames[i]);
};
FCKTools.GetParentWindow = function(A) {
	return A.contentWindow ? A.contentWindow : A.parentWindow;
};
FCKTools.HTMLEncode = function(A) {
	if (!A)
		return '';
	A = A.replace(/&/g, '&amp;');
	A = A.replace(/</g, '&lt;');
	A = A.replace(/>/g, '&gt;');
	return A;
};
FCKTools.AddSelectOption = function(A, B, C) {
	var D = FCKTools.GetElementDocument(A).createElement("OPTION");
	D.text = B;
	D.value = C;
	A.options.add(D);
	return D;
};
FCKTools.RunFunction = function(A, B, C, D) {
	if (A)
		this.SetTimeout(A, 0, B, C, D);
};
FCKTools.SetTimeout = function(A, B, C, D, E) {
	return (E || window).setTimeout(function() {
				if (D)
					A.apply(C, [].concat(D));
				else
					A.apply(C);
			}, B);
};
FCKTools.SetInterval = function(A, B, C, D, E) {
	return (E || window).setInterval(function() {
				A.apply(C, D || []);
			}, B);
};
FCKTools.ConvertStyleSizeToHtml = function(A) {
	return A.endsWith('%') ? A : parseInt(A);
};
FCKTools.ConvertHtmlSizeToStyle = function(A) {
	return A.endsWith('%') ? A : (A + 'px');
};
FCKTools.GetElementAscensor = function(A, B) {
	var e = A;
	var C = "," + B.toUpperCase() + ",";
	while (e) {
		if (C.indexOf("," + e.nodeName.toUpperCase() + ",") != -1)
			return e;
		e = e.parentNode;
	};
	return null;
};
FCKTools.CreateEventListener = function(A, B) {
	var f = function() {
		var C = [];
		for (var i = 0; i < arguments.length; i++)
			C.push(arguments[i]);
		A.apply(this, C.concat(B));
	};
	return f;
};
FCKTools.GetElementDocument = function(A) {
	return A.ownerDocument || A.document;
}
FCKTools.CancelEvent = function(e) {
	return false;
};
FCKTools._AppendStyleSheet = function(A, B) {
	return A.createStyleSheet(B).owningElement;
};
FCKTools.ClearElementAttributes = function(A) {
	A.clearAttributes();
};
FCKTools.GetAllChildrenIds = function(A) {
	var B = new Array();
	for (var i = 0; i < A.all.length; i++) {
		var C = A.all[i].id;
		if (C && C.length > 0)
			B[B.length] = C;
	};
	return B;
};
FCKTools.RemoveOuterTags = function(e) {
	e.insertAdjacentHTML('beforeBegin', e.innerHTML);
	e.parentNode.removeChild(e);
};
FCKTools.CreateXmlObject = function(A) {
	var B;
	switch (A) {
		case 'XmlHttp' :
			B = ['MSXML2.XmlHttp', 'Microsoft.XmlHttp'];
			break;
		case 'DOMDocument' :
			B = ['MSXML2.DOMDocument', 'Microsoft.XmlDom'];
			break;
	};
	for (var i = 0; i < 2; i++) {
		try {
			return new ActiveXObject(B[i]);
		} catch (e) {
		}
	};
	if (FCKLang.NoActiveX) {
		alert(FCKLang.NoActiveX);
		FCKLang.NoActiveX = null;
	}
};
FCKTools.DisableSelection = function(A) {
	A.unselectable = 'on';
	var e, i = 0;
	while (e = A.all[i++]) {
		switch (e.tagName) {
			case 'IFRAME' :
			case 'TEXTAREA' :
			case 'INPUT' :
			case 'SELECT' :/* Ignore the above tags */
				break;
			default :
				e.unselectable = 'on';
		}
	}
};
FCKTools.GetScrollPosition = function(A) {
	var B = A.document;
	var C = {
		X : B.documentElement.scrollLeft,
		Y : B.documentElement.scrollTop
	};
	if (C.X > 0 || C.Y > 0)
		return C;
	return {
		X : B.body.scrollLeft,
		Y : B.body.scrollTop
	};
};
FCKTools.AddEventListener = function(A, B, C) {
	A.attachEvent('on' + B, C);
};
FCKTools.RemoveEventListener = function(A, B, C) {
	A.detachEvent('on' + B, C);
};
FCKTools.AddEventListenerEx = function(A, B, C, D) {
	var o = new Object();
	o.Source = A;
	o.Params = D || [];
	o.Listener = function(ev) {
		return C.apply(o.Source, [ev].concat(o.Params));
	};
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(null, function() {
					o.Source = null;
					o.Params = null;
				});
	A.attachEvent('on' + B, o.Listener);
	A = null;
	D = null;
};
FCKTools.GetViewPaneSize = function(A) {
	var B;
	var C = A.document.documentElement;
	if (C && C.clientWidth)
		B = C;
	else
		B = top.document.body;
	if (B)
		return {
			Width : B.clientWidth,
			Height : B.clientHeight
		};
	else
		return {
			Width : 0,
			Height : 0
		};
};
FCKTools.SaveStyles = function(A) {
	var B = new Object();
	if (A.className.length > 0) {
		B.Class = A.className;
		A.className = '';
	};
	var C = A.style.cssText;
	if (C.length > 0) {
		B.Inline = C;
		A.style.cssText = '';
	};
	return B;
};
FCKTools.RestoreStyles = function(A, B) {
	A.className = B.Class || '';
	A.style.cssText = B.Inline || '';
};
FCKTools.RegisterDollarFunction = function(A) {
	A.$ = A.document.getElementById;
};
FCKTools.AppendElement = function(A, B) {
	return A.appendChild(this.GetElementDocument(A).createElement(B));
}
var FCKeditorAPI;
function InitializeAPI() {
	if (!(FCKeditorAPI = window.parent.FCKeditorAPI)) {
		var sScript = '\ var FCKeditorAPI={\ Version:\'2.3.2\',\ VersionBuild:\'1082\',\ __Instances:new Object(),\ GetInstance:function(instanceName)\{\ return this.__Instances[instanceName];\},\ _FunctionQueue:{\ Functions:new Array(),\ IsRunning:false,\ Add:function(functionToAdd)\{\ this.Functions.push(functionToAdd);\ if (!this.IsRunning)\ this.StartNext();\},\ StartNext:function()\{\ var aQueue=this.Functions;\ if (aQueue.length>0)\{\ this.IsRunning=true;\ aQueue[0].call();\}\ else\ this.IsRunning=false;\},\ Remove:function(func)\{\ var aQueue=this.Functions;\ var i=0,fFunc;\ while(fFunc=aQueue[i])\{\ if (fFunc==func)\ aQueue.splice(i,1);\ i++;\}\ this.StartNext();\}\}\}';
		if (window.parent.execScript)
			window.parent.execScript(sScript, 'JavaScript');
		else {
			if (FCKBrowserInfo.IsGecko10) {
				eval.call(window.parent, sScript);
			} else
				window.parent.eval(sScript);
		};
		FCKeditorAPI = window.parent.FCKeditorAPI;
	};
	FCKeditorAPI.__Instances[FCK.Name] = FCK;
};
function FCKeditorAPI_Cleanup() {
	FCKeditorAPI.__Instances[FCK.Name] = null;
};
FCKTools.AddEventListener(window, 'unload', FCKeditorAPI_Cleanup);
var FCKRegexLib = {
	AposEntity : /&apos;/gi,
	ObjectElements : /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,
	BlockElements : /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i,
	EmptyElements : /^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i,
	NamedCommands : /^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,
	BodyContents : /([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i,
	ToReplace : /___fcktoreplace:([\w]+)/ig,
	MetaHttpEquiv : /http-equiv\s*=\s*["']?([^"' ]+)/i,
	HasBaseTag : /<base /i,
	HtmlOpener : /<html\s?[^>]*>/i,
	HeadOpener : /<head\s?[^>]*>/i,
	HeadCloser : /<\/head\s*>/i,
	TableBorderClass : /\s*FCK__ShowTableBorders\s*/,
	ElementName : /(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/,
	ForceSimpleAmpersand : /___FCKAmp___/g,
	SpaceNoClose : /\/>/g,
	EmptyParagraph : /^<(p|div)>\s*<\/\1>$/i,
	TagBody : /></,
	StrongOpener : /<STRONG([ \>])/gi,
	StrongCloser : /<\/STRONG>/gi,
	EmOpener : /<EM([ \>])/gi,
	EmCloser : /<\/EM>/gi,
	AbbrOpener : /<ABBR([ \>])/gi,
	AbbrCloser : /<\/ABBR>/gi,
	GeckoEntitiesMarker : /#\?-\:/g,
	ProtectUrlsImg : /(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,
	ProtectUrlsA : /(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,
	Html4DocType : /HTML 4\.0 Transitional/i,
	DocTypeTag : /<!DOCTYPE[^>]*>/i,
	TagsWithEvent : /<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,
	EventAttributes : /\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,
	ProtectedEvents : /\s\w+_fckprotectedatt="([^"]+)"/g
}
var FCKLanguageManager = FCK.Language = new Object();
FCKLanguageManager.AvailableLanguages = {
	'ar' : 'Arabic',
	'bg' : 'Bulgarian',
	'bn' : 'Bengali/Bangla',
	'bs' : 'Bosnian',
	'ca' : 'Catalan',
	'cs' : 'Czech',
	'da' : 'Danish',
	'de' : 'German',
	'el' : 'Greek',
	'en' : 'English',
	'en-au' : 'English (Australia)',
	'en-ca' : 'English (Canadian)',
	'en-uk' : 'English (United Kingdom)',
	'eo' : 'Esperanto',
	'es' : 'Spanish',
	'et' : 'Estonian',
	'eu' : 'Basque',
	'fa' : 'Persian',
	'fi' : 'Finnish',
	'fo' : 'Faroese',
	'fr' : 'French',
	'gl' : 'Galician',
	'he' : 'Hebrew',
	'hi' : 'Hindi',
	'hr' : 'Croatian',
	'hu' : 'Hungarian',
	'it' : 'Italian',
	'ja' : 'Japanese',
	'km' : 'Khmer',
	'ko' : 'Korean',
	'lt' : 'Lithuanian',
	'lv' : 'Latvian',
	'mn' : 'Mongolian',
	'ms' : 'Malay',
	'nb' : 'Norwegian Bokmal',
	'nl' : 'Dutch',
	'no' : 'Norwegian',
	'pl' : 'Polish',
	'pt' : 'Portuguese (Portugal)',
	'pt-br' : 'Portuguese (Brazil)',
	'ro' : 'Romanian',
	'ru' : 'Russian',
	'sk' : 'Slovak',
	'sl' : 'Slovenian',
	'sr' : 'Serbian (Cyrillic)',
	'sr-latn' : 'Serbian (Latin)',
	'sv' : 'Swedish',
	'th' : 'Thai',
	'tr' : 'Turkish',
	'uk' : 'Ukrainian',
	'vi' : 'Vietnamese',
	'zh' : 'Chinese Traditional',
	'zh-cn' : 'Chinese Simplified'
};
FCKLanguageManager.GetActiveLanguage = function() {
	if (FCKConfig.AutoDetectLanguage) {
		var A;
		if (navigator.userLanguage)
			A = navigator.userLanguage.toLowerCase();
		else if (navigator.language)
			A = navigator.language.toLowerCase();
		else {
			return FCKConfig.DefaultLanguage;
		};
		if (A.length >= 5) {
			A = A.substr(0, 5);
			if (this.AvailableLanguages[A])
				return A;
		};
		if (A.length >= 2) {
			A = A.substr(0, 2);
			if (this.AvailableLanguages[A])
				return A;
		}
	};
	return this.DefaultLanguage;
};
FCKLanguageManager.TranslateElements = function(A, B, C, D) {
	var e = A.getElementsByTagName(B);
	var E, s;
	for (var i = 0; i < e.length; i++) {
		if (E = e[i].getAttribute('fckLang')) {
			if (s = FCKLang[E]) {
				if (D)
					s = FCKTools.HTMLEncode(s);
				eval('e[i].' + C + ' = s');
			}
		}
	}
};
FCKLanguageManager.TranslatePage = function(A) {
	this.TranslateElements(A, 'INPUT', 'value');
	this.TranslateElements(A, 'SPAN', 'innerHTML');
	this.TranslateElements(A, 'LABEL', 'innerHTML');
	this.TranslateElements(A, 'OPTION', 'innerHTML', true);
};
FCKLanguageManager.Initialize = function() {
	if (this.AvailableLanguages[FCKConfig.DefaultLanguage])
		this.DefaultLanguage = FCKConfig.DefaultLanguage;
	else
		this.DefaultLanguage = 'en';
	this.ActiveLanguage = new Object();
	this.ActiveLanguage.Code = this.GetActiveLanguage();
	this.ActiveLanguage.Name = this.AvailableLanguages[this.ActiveLanguage.Code];
}
var FCKEvents;
FCKEvents = function(A) {
	this.Owner = A;
	this.RegisteredEvents = new Object();
};
FCKEvents.prototype.AttachEvent = function(A, B) {
	var C;
	if (!(C = this.RegisteredEvents[A]))
		this.RegisteredEvents[A] = [B];
	else
		C.push(B);
};
FCKEvents.prototype.FireEvent = function(A, B) {
	var C = true;
	var D = this.RegisteredEvents[A];
	if (D) {
		for (var i = 0; i < D.length; i++)
			C = (D[i](this.Owner, B) && C);
	};
	return C;
}
var FCKXHtmlEntities = new Object();
FCKXHtmlEntities.Initialize = function() {
	if (FCKXHtmlEntities.Entities)
		return;
	var A = '';
	if (FCKConfig.ProcessHTMLEntities) {
		FCKXHtmlEntities.Entities = {
			' ' : 'nbsp',
			'¡' : 'iexcl',
			'¢' : 'cent',
			'£' : 'pound',
			'¤' : 'curren',
			'¥' : 'yen',
			'¦' : 'brvbar',
			'§' : 'sect',
			'¨' : 'uml',
			'©' : 'copy',
			'ª' : 'ordf',
			'«' : 'laquo',
			'¬' : 'not',
			'­' : 'shy',
			'®' : 'reg',
			'¯' : 'macr',
			'°' : 'deg',
			'±' : 'plusmn',
			'²' : 'sup2',
			'³' : 'sup3',
			'´' : 'acute',
			'µ' : 'micro',
			'¶' : 'para',
			'·' : 'middot',
			'¸' : 'cedil',
			'¹' : 'sup1',
			'º' : 'ordm',
			'»' : 'raquo',
			'¼' : 'frac14',
			'½' : 'frac12',
			'¾' : 'frac34',
			'¿' : 'iquest',
			'×' : 'times',
			'÷' : 'divide',
			'ƒ' : 'fnof',
			'•' : 'bull',
			'…' : 'hellip',
			'′' : 'prime',
			'″' : 'Prime',
			'‾' : 'oline',
			'⁄' : 'frasl',
			'℘' : 'weierp',
			'ℑ' : 'image',
			'ℜ' : 'real',
			'™' : 'trade',
			'ℵ' : 'alefsym',
			'←' : 'larr',
			'↑' : 'uarr',
			'→' : 'rarr',
			'↓' : 'darr',
			'↔' : 'harr',
			'↵' : 'crarr',
			'⇐' : 'lArr',
			'⇑' : 'uArr',
			'⇒' : 'rArr',
			'⇓' : 'dArr',
			'⇔' : 'hArr',
			'∀' : 'forall',
			'∂' : 'part',
			'∃' : 'exist',
			'∅' : 'empty',
			'∇' : 'nabla',
			'∈' : 'isin',
			'∉' : 'notin',
			'∋' : 'ni',
			'∏' : 'prod',
			'∑' : 'sum',
			'−' : 'minus',
			'∗' : 'lowast',
			'√' : 'radic',
			'∝' : 'prop',
			'∞' : 'infin',
			'∠' : 'ang',
			'∧' : 'and',
			'∨' : 'or',
			'∩' : 'cap',
			'∪' : 'cup',
			'∫' : 'int',
			'∴' : 'there4',
			'∼' : 'sim',
			'≅' : 'cong',
			'≈' : 'asymp',
			'≠' : 'ne',
			'≡' : 'equiv',
			'≤' : 'le',
			'≥' : 'ge',
			'⊂' : 'sub',
			'⊃' : 'sup',
			'⊄' : 'nsub',
			'⊆' : 'sube',
			'⊇' : 'supe',
			'⊕' : 'oplus',
			'⊗' : 'otimes',
			'⊥' : 'perp',
			'⋅' : 'sdot',
			'◊' : 'loz',
			'♠' : 'spades',
			'♣' : 'clubs',
			'♥' : 'hearts',
			'♦' : 'diams',
			'"' : 'quot',
			'ˆ' : 'circ',
			'˜' : 'tilde',
			' ' : 'ensp',
			' ' : 'emsp',
			' ' : 'thinsp',
			'‌' : 'zwnj',
			'‍' : 'zwj',
			'‎' : 'lrm',
			'‏' : 'rlm',
			'–' : 'ndash',
			'—' : 'mdash',
			'‘' : 'lsquo',
			'’' : 'rsquo',
			'‚' : 'sbquo',
			'“' : 'ldquo',
			'”' : 'rdquo',
			'„' : 'bdquo',
			'†' : 'dagger',
			'‡' : 'Dagger',
			'‰' : 'permil',
			'‹' : 'lsaquo',
			'›' : 'rsaquo',
			'€' : 'euro'
		};
		for (var e in FCKXHtmlEntities.Entities)
			A += e;
		if (FCKConfig.IncludeLatinEntities) {
			var B = {
				'À' : 'Agrave',
				'Á' : 'Aacute',
				'Â' : 'Acirc',
				'Ã' : 'Atilde',
				'Ä' : 'Auml',
				'Å' : 'Aring',
				'Æ' : 'AElig',
				'Ç' : 'Ccedil',
				'È' : 'Egrave',
				'É' : 'Eacute',
				'Ê' : 'Ecirc',
				'Ë' : 'Euml',
				'Ì' : 'Igrave',
				'Í' : 'Iacute',
				'Î' : 'Icirc',
				'Ï' : 'Iuml',
				'Ð' : 'ETH',
				'Ñ' : 'Ntilde',
				'Ò' : 'Ograve',
				'Ó' : 'Oacute',
				'Ô' : 'Ocirc',
				'Õ' : 'Otilde',
				'Ö' : 'Ouml',
				'Ø' : 'Oslash',
				'Ù' : 'Ugrave',
				'Ú' : 'Uacute',
				'Û' : 'Ucirc',
				'Ü' : 'Uuml',
				'Ý' : 'Yacute',
				'Þ' : 'THORN',
				'ß' : 'szlig',
				'à' : 'agrave',
				'á' : 'aacute',
				'â' : 'acirc',
				'ã' : 'atilde',
				'ä' : 'auml',
				'å' : 'aring',
				'æ' : 'aelig',
				'ç' : 'ccedil',
				'è' : 'egrave',
				'é' : 'eacute',
				'ê' : 'ecirc',
				'ë' : 'euml',
				'ì' : 'igrave',
				'í' : 'iacute',
				'î' : 'icirc',
				'ï' : 'iuml',
				'ð' : 'eth',
				'ñ' : 'ntilde',
				'ò' : 'ograve',
				'ó' : 'oacute',
				'ô' : 'ocirc',
				'õ' : 'otilde',
				'ö' : 'ouml',
				'ø' : 'oslash',
				'ù' : 'ugrave',
				'ú' : 'uacute',
				'û' : 'ucirc',
				'ü' : 'uuml',
				'ý' : 'yacute',
				'þ' : 'thorn',
				'ÿ' : 'yuml',
				'Œ' : 'OElig',
				'œ' : 'oelig',
				'Š' : 'Scaron',
				'š' : 'scaron',
				'Ÿ' : 'Yuml'
			};
			for (var e in B) {
				FCKXHtmlEntities.Entities[e] = B[e];
				A += e;
			};
			B = null;
		};
		if (FCKConfig.IncludeGreekEntities) {
			var B = {
				'Α' : 'Alpha',
				'Β' : 'Beta',
				'Γ' : 'Gamma',
				'Δ' : 'Delta',
				'Ε' : 'Epsilon',
				'Ζ' : 'Zeta',
				'Η' : 'Eta',
				'Θ' : 'Theta',
				'Ι' : 'Iota',
				'Κ' : 'Kappa',
				'Λ' : 'Lambda',
				'Μ' : 'Mu',
				'Ν' : 'Nu',
				'Ξ' : 'Xi',
				'Ο' : 'Omicron',
				'Π' : 'Pi',
				'Ρ' : 'Rho',
				'Σ' : 'Sigma',
				'Τ' : 'Tau',
				'Υ' : 'Upsilon',
				'Φ' : 'Phi',
				'Χ' : 'Chi',
				'Ψ' : 'Psi',
				'Ω' : 'Omega',
				'α' : 'alpha',
				'β' : 'beta',
				'γ' : 'gamma',
				'δ' : 'delta',
				'ε' : 'epsilon',
				'ζ' : 'zeta',
				'η' : 'eta',
				'θ' : 'theta',
				'ι' : 'iota',
				'κ' : 'kappa',
				'λ' : 'lambda',
				'μ' : 'mu',
				'ν' : 'nu',
				'ξ' : 'xi',
				'ο' : 'omicron',
				'π' : 'pi',
				'ρ' : 'rho',
				'ς' : 'sigmaf',
				'σ' : 'sigma',
				'τ' : 'tau',
				'υ' : 'upsilon',
				'φ' : 'phi',
				'χ' : 'chi',
				'ψ' : 'psi',
				'ω' : 'omega'
			};
			for (var e in B) {
				FCKXHtmlEntities.Entities[e] = B[e];
				A += e;
			};
			B = null;
		}
	} else {
		FCKXHtmlEntities.Entities = {};
		A = ' ';
	};
	var D = '[' + A + ']';
	if (FCKConfig.ProcessNumericEntities)
		D = '[^ -~]|' + D;
	var E = FCKConfig.AdditionalNumericEntities;
	if (E || E.length > 0)
		D += '|' + FCKConfig.AdditionalNumericEntities;
	FCKXHtmlEntities.EntitiesRegex = new RegExp(D, 'g');
}
var FCKXHtml = new Object();
FCKXHtml.CurrentJobNum = 0;
FCKXHtml.GetXHTML = function(A, B, C) {
	FCKXHtmlEntities.Initialize();
	var D = FCK.IsDirty();
	this._CreateNode = FCKConfig.ForceStrongEm
			? FCKXHtml_CreateNode_StrongEm
			: FCKXHtml_CreateNode_Normal;
	FCKXHtml.SpecialBlocks = new Array();
	this.XML = FCKTools.CreateXmlObject('DOMDocument');
	this.MainNode = this.XML.appendChild(this.XML.createElement('xhtml'));
	FCKXHtml.CurrentJobNum++;
	if (B)
		this._AppendNode(this.MainNode, A);
	else
		this._AppendChildNodes(this.MainNode, A, false);
	var E = this._GetMainXmlString();
	this.XML = null;
	E = E.substr(7, E.length - 15).trim();
	if (FCKBrowserInfo.IsGecko)
		E = E.replace(/<br\/>$/, '');
	E = E.replace(FCKRegexLib.SpaceNoClose, ' />');
	if (FCKConfig.ForceSimpleAmpersand)
		E = E.replace(FCKRegexLib.ForceSimpleAmpersand, '&');
	if (C)
		E = FCKCodeFormatter.Format(E);
	for (var i = 0; i < FCKXHtml.SpecialBlocks.length; i++) {
		var F = new RegExp('___FCKsi___' + i);
		E = E.replace(F, FCKXHtml.SpecialBlocks[i]);
	};
	E = E.replace(FCKRegexLib.GeckoEntitiesMarker, '&');
	if (!D)
		FCK.ResetIsDirty();
	return E
};
FCKXHtml._AppendAttribute = function(A, B, C) {
	if (FCKConfig.ForceSimpleAmpersand && C.replace)
		C = C.replace(/&/g, '___FCKAmp___');
	try {
		var D = this.XML.createAttribute(B);
		D.value = C ? C : '';
		A.attributes.setNamedItem(D);
	} catch (e) {
	}
};
FCKXHtml._AppendChildNodes = function(A, B, C) {
	var D = 0;
	var E = B.firstChild;
	while (E) {
		if (this._AppendNode(A, E))
			D++;
		E = E.nextSibling;
	};
	if (D == 0) {
		if (C && FCKConfig.FillEmptyBlocks) {
			this._AppendEntity(A, 'nbsp');
			return;
		};
		if (!FCKRegexLib.EmptyElements.test(B.nodeName))
			A.appendChild(this.XML.createTextNode(''));
	}
};
FCKXHtml._AppendNode = function(A, B) {
	if (!B)
		return;
	switch (B.nodeType) {
		case 1 :
			if (B.getAttribute('_fckfakelement'))
				return FCKXHtml._AppendNode(A, FCK.GetRealElement(B));
			if (FCKBrowserInfo.IsGecko
					&& B.hasAttribute('_moz_editor_bogus_node'))
				return false;
			if (B.getAttribute('_fcktemp'))
				return false;
			var C = B.nodeName;
			if (FCKBrowserInfo.IsIE && B.scopeName && B.scopeName != 'HTML'
					&& B.scopeName != 'FCK')
				C = B.scopeName + ':' + C;
			if (!FCKRegexLib.ElementName.test(C))
				return false;
			C = C.toLowerCase();
			if (FCKBrowserInfo.IsGecko && C == 'br' && B.hasAttribute('type')
					&& B.getAttribute('type', 2) == '_moz')
				return false;
			if (B._fckxhtmljob && B._fckxhtmljob == FCKXHtml.CurrentJobNum)
				return false;
			var D = this._CreateNode(C);
			FCKXHtml._AppendAttributes(A, B, D, C);
			B._fckxhtmljob = FCKXHtml.CurrentJobNum;
			var E = FCKXHtml.TagProcessors[C];
			if (E) {
				D = E(D, B, A);
				if (!D)
					break;
			} else
				this._AppendChildNodes(D, B, FCKRegexLib.BlockElements.test(C));
			A.appendChild(D);
			break;
		case 3 :
			this._AppendTextNode(A, B.nodeValue.replaceNewLineChars(' '));
			break;
		case 8 :
			if (FCKBrowserInfo.IsIE && !B.innerHTML)
				break;
			try {
				A.appendChild(this.XML.createComment(B.nodeValue));
			} catch (e) { /*
							 * Do nothing... probably this is a wrong format
							 * comment.
							 */
			}
			;
			break;
		default :
			A.appendChild(this.XML
					.createComment("Element not supported - Type: "
							+ B.nodeType + " Name: " + B.nodeName));
			break;
	};
	return true;
};
function FCKXHtml_CreateNode_StrongEm(nodeName) {
	switch (nodeName) {
		case 'b' :
			nodeName = 'strong';
			break;
		case 'i' :
			nodeName = 'em';
			break;
	};
	return this.XML.createElement(nodeName);
};
function FCKXHtml_CreateNode_Normal(nodeName) {
	return this.XML.createElement(nodeName);
};
FCKXHtml._AppendSpecialItem = function(A) {
	return '___FCKsi___' + FCKXHtml.SpecialBlocks.AddItem(A);
};
FCKXHtml._AppendEntity = function(A, B) {
	A.appendChild(this.XML.createTextNode('#?-:' + B + ';'));
};
FCKXHtml._AppendTextNode = function(A, B) {
	A.appendChild(this.XML.createTextNode(B.replace(
			FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity)));
	return;
};
function FCKXHtml_GetEntity(character) {
	var sEntity = FCKXHtmlEntities.Entities[character]
			|| ('#' + character.charCodeAt(0));
	return '#?-:' + sEntity + ';';
};
FCKXHtml.TagProcessors = new Object();
FCKXHtml.TagProcessors['img'] = function(A, B) {
	if (!A.attributes.getNamedItem('alt'))
		FCKXHtml._AppendAttribute(A, 'alt', '');
	var C = B.getAttribute('_fcksavedurl');
	if (C != null)
		FCKXHtml._AppendAttribute(A, 'src', C);
	return A;
};
FCKXHtml.TagProcessors['a'] = function(A, B) {
	var C = B.getAttribute('_fcksavedurl');
	if (C != null)
		FCKXHtml._AppendAttribute(A, 'href', C);
	FCKXHtml._AppendChildNodes(A, B, false);
	if (A.childNodes.length == 0 && !A.getAttribute('name'))
		return false;
	return A;
};
FCKXHtml.TagProcessors['script'] = function(A, B) {
	if (!A.attributes.getNamedItem('type'))
		FCKXHtml._AppendAttribute(A, 'type', 'text/javascript');
	A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml
			._AppendSpecialItem(B.text)));
	return A;
};
FCKXHtml.TagProcessors['style'] = function(A, B) {
	if (!A.attributes.getNamedItem('type'))
		FCKXHtml._AppendAttribute(A, 'type', 'text/css');
	A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml
			._AppendSpecialItem(B.innerHTML)));
	return A;
};
FCKXHtml.TagProcessors['title'] = function(A, B) {
	A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));
	return A;
};
FCKXHtml.TagProcessors['table'] = function(A, B) {
	var C = A.attributes.getNamedItem('class');
	if (C && FCKRegexLib.TableBorderClass.test(C.nodeValue)) {
		var D = C.nodeValue.replace(FCKRegexLib.TableBorderClass, '');
		if (D.length == 0)
			A.attributes.removeNamedItem('class');
		else
			FCKXHtml._AppendAttribute(A, 'class', D);
	};
	FCKXHtml._AppendChildNodes(A, B, false);
	return A;
};
FCKXHtml.TagProcessors['ol'] = FCKXHtml.TagProcessors['ul'] = function(A, B, C) {
	if (B.innerHTML.trim().length == 0)
		return;
	var D = C.lastChild;
	if (D && D.nodeType == 3)
		D = D.previousSibling;
	if (D && D.nodeName.toUpperCase() == 'LI') {
		B._fckxhtmljob = null;
		FCKXHtml._AppendNode(D, B);
		return;
	};
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['span'] = function(A, B) {
	if (B.innerHTML.length == 0)
		return false;
	FCKXHtml._AppendChildNodes(A, B, false);
	return A;
}
FCKXHtml._GetMainXmlString = function() {
	return this.MainNode.xml;
};
FCKXHtml._AppendAttributes = function(A, B, C, D) {
	var E = B.attributes;
	for (var n = 0; n < E.length; n++) {
		var F = E[n];
		if (F.specified) {
			var G = F.nodeName.toLowerCase();
			var H;
			if (G.startsWith('_fck'))
				continue;
			else if (G == 'style')
				H = B.style.cssText;
			else if (G == 'class' || G.indexOf('on') == 0)
				H = F.nodeValue;
			else if (D == 'body' && G == 'contenteditable')
				continue;
			else if (F.nodeValue === true)
				H = G;
			else if (!(H = B.getAttribute(G, 2)))
				H = F.nodeValue;
			this._AppendAttribute(C, G, H);
		}
	}
};
FCKXHtml.TagProcessors['meta'] = function(A, B) {
	var C = A.attributes.getNamedItem('http-equiv');
	if (C == null || C.value.length == 0) {
		var D = B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);
		if (D) {
			D = D[1];
			FCKXHtml._AppendAttribute(A, 'http-equiv', D);
		}
	};
	return A;
};
FCKXHtml.TagProcessors['font'] = function(A, B) {
	if (A.attributes.length == 0)
		A = FCKXHtml.XML.createDocumentFragment();
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['input'] = function(A, B) {
	if (B.name)
		FCKXHtml._AppendAttribute(A, 'name', B.name);
	if (B.value && !A.attributes.getNamedItem('value'))
		FCKXHtml._AppendAttribute(A, 'value', B.value);
	if (!A.attributes.getNamedItem('type'))
		FCKXHtml._AppendAttribute(A, 'type', 'text');
	return A;
};
FCKXHtml.TagProcessors['option'] = function(A, B) {
	if (B.selected && !A.attributes.getNamedItem('selected'))
		FCKXHtml._AppendAttribute(A, 'selected', 'selected');
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['area'] = function(A, B) {
	if (!A.attributes.getNamedItem('coords')) {
		var C = B.getAttribute('coords', 2);
		if (C && C != '0,0,0')
			FCKXHtml._AppendAttribute(A, 'coords', C);
	};
	if (!A.attributes.getNamedItem('shape')) {
		var C = B.getAttribute('shape', 2);
		if (C && C.length > 0)
			FCKXHtml._AppendAttribute(A, 'shape', C);
	};
	return A;
};
FCKXHtml.TagProcessors['label'] = function(A, B) {
	if (B.htmlFor.length > 0)
		FCKXHtml._AppendAttribute(A, 'for', B.htmlFor);
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['form'] = function(A, B) {
	if (B.acceptCharset && B.acceptCharset.length > 0
			&& B.acceptCharset != 'UNKNOWN')
		FCKXHtml._AppendAttribute(A, 'accept-charset', B.acceptCharset);
	if (B.name)
		FCKXHtml._AppendAttribute(A, 'name', B.name);
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['textarea'] = FCKXHtml.TagProcessors['select'] = function(
		A, B) {
	if (B.name)
		FCKXHtml._AppendAttribute(A, 'name', B.name);
	FCKXHtml._AppendChildNodes(A, B);
	return A;
};
FCKXHtml.TagProcessors['div'] = function(A, B) {
	if (B.align.length > 0)
		FCKXHtml._AppendAttribute(A, 'align', B.align);
	FCKXHtml._AppendChildNodes(A, B);
	return A;
}
var FCKCodeFormatter = new Object();
FCKCodeFormatter.Init = function() {
	var A = this.Regex = new Object();
	A.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;
	A.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;
	A.NewLineTags = /\<(BR|HR)[^\>]*\>/gi;
	A.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;
	A.LineSplitter = /\s*\n+\s*/g;
	A.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;
	A.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;
	A.FormatIndentatorRemove = new RegExp('^' + FCKConfig.FormatIndentator);
	A.ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;
};
FCKCodeFormatter._ProtectData = function(A, B, C, D) {
	return B + '___FCKpd___' + FCKCodeFormatter.ProtectedData.AddItem(C) + D;
};
FCKCodeFormatter.Format = function(A) {
	if (!this.Regex)
		this.Init();
	FCKCodeFormatter.ProtectedData = new Array();
	var B = A.replace(this.Regex.ProtectedTags, FCKCodeFormatter._ProtectData);
	B = B.replace(this.Regex.BlocksOpener, '\n$&');;
	B = B.replace(this.Regex.BlocksCloser, '$&\n');
	B = B.replace(this.Regex.NewLineTags, '$&\n');
	B = B.replace(this.Regex.MainTags, '\n$&\n');
	var C = '';
	var D = B.split(this.Regex.LineSplitter);
	B = '';
	for (var i = 0; i < D.length; i++) {
		var E = D[i];
		if (E.length == 0)
			continue;
		if (this.Regex.DecreaseIndent.test(E))
			C = C.replace(this.Regex.FormatIndentatorRemove, '');
		B += C + E + '\n';
		if (this.Regex.IncreaseIndent.test(E))
			C += FCKConfig.FormatIndentator;
	};
	for (var i = 0; i < FCKCodeFormatter.ProtectedData.length; i++) {
		var F = new RegExp('___FCKpd___' + i);
		B = B.replace(F, FCKCodeFormatter.ProtectedData[i].replace(/\$/g,
						'$$$$'));
	};
	return B.trim();
}
var FCKUndo = new Object();
FCKUndo.SavedData = new Array();
FCKUndo.CurrentIndex = -1;
FCKUndo.TypesCount = FCKUndo.MaxTypes = 25;
FCKUndo.Typing = false;
FCKUndo.SaveUndoStep = function() {
	if (FCK.EditMode != FCK_EDITMODE_WYSIWYG)
		return;
	FCKUndo.SavedData = FCKUndo.SavedData.slice(0, FCKUndo.CurrentIndex + 1);
	var A = FCK.EditorDocument.body.innerHTML;
	if (FCKUndo.CurrentIndex >= 0
			&& A == FCKUndo.SavedData[FCKUndo.CurrentIndex][0])
		return;
	if (FCKUndo.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels)
		FCKUndo.SavedData.shift();
	else
		FCKUndo.CurrentIndex++;
	var B;
	if (FCK.EditorDocument.selection.type == 'Text')
		B = FCK.EditorDocument.selection.createRange().getBookmark();
	FCKUndo.SavedData[FCKUndo.CurrentIndex] = [A, B];
	FCK.Events.FireEvent("OnSelectionChange");
};
FCKUndo.CheckUndoState = function() {
	return (FCKUndo.Typing || FCKUndo.CurrentIndex > 0);
};
FCKUndo.CheckRedoState = function() {
	return (!FCKUndo.Typing && FCKUndo.CurrentIndex < (FCKUndo.SavedData.length - 1));
};
FCKUndo.Undo = function() {
	if (FCKUndo.CheckUndoState()) {
		if (FCKUndo.CurrentIndex == (FCKUndo.SavedData.length - 1)) {
			FCKUndo.SaveUndoStep();
		};
		FCKUndo._ApplyUndoLevel(--FCKUndo.CurrentIndex);
		FCK.Events.FireEvent("OnSelectionChange");
	}
};
FCKUndo.Redo = function() {
	if (FCKUndo.CheckRedoState()) {
		FCKUndo._ApplyUndoLevel(++FCKUndo.CurrentIndex);
		FCK.Events.FireEvent("OnSelectionChange");
	}
};
FCKUndo._ApplyUndoLevel = function(A) {
	var B = FCKUndo.SavedData[A];
	if (!B)
		return;
	FCK.SetInnerHtml(B[0]);
	if (B[1]) {
		var C = FCK.EditorDocument.selection.createRange();
		C.moveToBookmark(B[1]);
		C.select();
	};
	FCKUndo.TypesCount = 0;
	FCKUndo.Typing = false;
}
var FCKEditingArea = function(A) {
	this.TargetElement = A;
	this.Mode = FCK_EDITMODE_WYSIWYG;
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKEditingArea_Cleanup);
};
FCKEditingArea.prototype.Start = function(A, B) {
	var C = this.TargetElement;
	var D = FCKTools.GetElementDocument(C);
	while (C.childNodes.length > 0)
		C.removeChild(C.childNodes[0]);
	if (this.Mode == FCK_EDITMODE_WYSIWYG) {
		if (FCKBrowserInfo.IsGecko)
			A = A.replace(/(<body[^>]*>)\s*(<\/body>)/i, '$1' + GECKO_BOGUS
							+ '$2');
		var E = this.IFrame = D.createElement('iframe');
		E.src = 'javascript:void(0)';
		E.frameBorder = 0;
		E.width = E.height = '100%';
		C.appendChild(E);
		if (FCKBrowserInfo.IsIE)
			A = A
					.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,
							'$1></base>');
		this.Window = E.contentWindow;
		var F = this.Document = this.Window.document;
		F.open();
		F.write(A);
		F.close();
		if (FCKBrowserInfo.IsGecko10 && !B) {
			this.Start(A, true);
			return;
		};
		this.Window._FCKEditingArea = this;
		if (FCKBrowserInfo.IsGecko10)
			this.Window.setTimeout(FCKEditingArea_CompleteStart, 500);
		else
			FCKEditingArea_CompleteStart.call(this.Window);
	} else {
		var G = this.Textarea = D.createElement('textarea');
		G.className = 'SourceField';
		G.dir = 'ltr';
		G.style.width = G.style.height = '100%';
		G.style.border = 'none';
		C.appendChild(G);
		G.value = A;
		FCKTools.RunFunction(this.OnLoad);
	}
};
function FCKEditingArea_CompleteStart() {
	if (!this.document.body) {
		this.setTimeout(FCKEditingArea_CompleteStart, 50);
		return;
	};
	var oEditorArea = this._FCKEditingArea;
	oEditorArea.MakeEditable();
	FCKTools.RunFunction(oEditorArea.OnLoad);
};
FCKEditingArea.prototype.MakeEditable = function() {
	var A = this.Document;
	if (FCKBrowserInfo.IsIE)
		A.body.contentEditable = true;
	else {
		try {
			A.designMode = 'on';
			A.execCommand('useCSS', false, !FCKConfig.GeckoUseSPAN);
			A.execCommand('enableObjectResizing', false,
					!FCKConfig.DisableObjectResizing);
			A.execCommand('enableInlineTableEditing', false,
					!FCKConfig.DisableFFTableHandles);
		} catch (e) {
		}
	}
};
FCKEditingArea.prototype.Focus = function() {
	try {
		if (this.Mode == FCK_EDITMODE_WYSIWYG) {
			if (FCKBrowserInfo.IsSafari)
				this.IFrame.focus();
			else
				this.Window.focus();
		} else
			this.Textarea.focus();
	} catch (e) {
	}
};
function FCKEditingArea_Cleanup() {
	this.TargetElement = null;
	this.IFrame = null;
	this.Document = null;
	this.Textarea = null;
	if (this.Window) {
		this.Window._FCKEditingArea = null;
		this.Window = null;
	}
}
var FCKDocumentProcessor = new Object();
FCKDocumentProcessor._Items = new Array();
FCKDocumentProcessor.AppendNew = function() {
	var A = new Object();
	this._Items.AddItem(A);
	return A;
};
FCKDocumentProcessor.Process = function(A) {
	var B, i = 0;
	while ((B = this._Items[i++]))
		B.ProcessDocument(A);
};
var FCKDocumentProcessor_CreateFakeImage = function(A, B) {
	var C = FCK.EditorDocument.createElement('IMG');
	C.className = A;
	C.src = FCKConfig.FullBasePath + 'images/spacer.gif';
	C.setAttribute('_fckfakelement', 'true', 0);
	C.setAttribute('_fckrealelement', FCKTempBin.AddElement(B), 0);
	return C;
};
var FCKAnchorsProcessor = FCKDocumentProcessor.AppendNew();
FCKAnchorsProcessor.ProcessDocument = function(A) {
	var B = A.getElementsByTagName('A');
	var C;
	var i = B.length - 1;
	while (i >= 0 && (C = B[i--])) {
		if (C.name.length > 0
				&& (!C.getAttribute('href') || C.getAttribute('href').length == 0)) {
			var D = FCKDocumentProcessor_CreateFakeImage('FCK__Anchor', C
							.cloneNode(true));
			D.setAttribute('_fckanchor', 'true', 0);
			C.parentNode.insertBefore(D, C);
			C.parentNode.removeChild(C);
		}
	}
};
var FCKPageBreaksProcessor = FCKDocumentProcessor.AppendNew();
FCKPageBreaksProcessor.ProcessDocument = function(A) {
	var B = A.getElementsByTagName('DIV');
	var C;
	var i = B.length - 1;
	while (i >= 0 && (C = B[i--])) {
		if (C.style.pageBreakAfter == 'always' && C.childNodes.length == 1
				&& C.childNodes[0].style
				&& C.childNodes[0].style.display == 'none') {
			var D = FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak', C
							.cloneNode(true));
			C.parentNode.insertBefore(D, C);
			C.parentNode.removeChild(C);
		}
	}
};
var FCKFlashProcessor = FCKDocumentProcessor.AppendNew();
FCKFlashProcessor.ProcessDocument = function(A) {
	var B = A.getElementsByTagName('EMBED');
	var C;
	var i = B.length - 1;
	while (i >= 0 && (C = B[i--])) {
		if (C.src.endsWith('.swf', true)) {
			var D = C.cloneNode(true);
			if (FCKBrowserInfo.IsIE) {
				var E;
				if (E = C.getAttribute('scale'))
					D.setAttribute('scale', E);
				if (E = C.getAttribute('play'))
					D.setAttribute('play', E);
				if (E = C.getAttribute('loop'))
					D.setAttribute('loop', E);
				if (E = C.getAttribute('menu'))
					D.setAttribute('menu', E);
				if (E = C.getAttribute('wmode'))
					D.setAttribute('wmode', E);
				if (E = C.getAttribute('quality'))
					D.setAttribute('quality', E);
			};
			var F = FCKDocumentProcessor_CreateFakeImage('FCK__Flash', D);
			F.setAttribute('_fckflash', 'true', 0);
			FCKFlashProcessor.RefreshView(F, C);
			C.parentNode.insertBefore(F, C);
			C.parentNode.removeChild(C);
		}
	}
};
FCKFlashProcessor.RefreshView = function(A, B) {
	if (B.width > 0)
		A.style.width = FCKTools.ConvertHtmlSizeToStyle(B.width);
	if (B.height > 0)
		A.style.height = FCKTools.ConvertHtmlSizeToStyle(B.height);
};
FCK.GetRealElement = function(A) {
	var e = FCKTempBin.Elements[A.getAttribute('_fckrealelement')];
	if (A.getAttribute('_fckflash')) {
		if (A.style.width.length > 0)
			e.width = FCKTools.ConvertStyleSizeToHtml(A.style.width);
		if (A.style.height.length > 0)
			e.height = FCKTools.ConvertStyleSizeToHtml(A.style.height);
	};
	return e;
};
var FCK_StartupValue;
FCK.Events = new FCKEvents(FCK);
FCK.Toolbar = null;
FCK.HasFocus = false;
FCK.StartEditor = function() {
	FCK.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="'
			+ FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '';
	FCK.EditingArea = new FCKEditingArea(document
			.getElementById('xEditingArea'));
	this.SetHTML(FCKTools.GetLinkedFieldValue());
};
FCK.Focus = function() {
	FCK.EditingArea.Focus();
};
FCK.SetStatus = function(A) {
	this.Status = A;
	if (A == FCK_STATUS_ACTIVE) {
		FCKFocusManager.AddWindow(window, true);
		if (FCKBrowserInfo.IsIE)
			FCKFocusManager.AddWindow(window.frameElement, true);
		if (FCKConfig.StartupFocus)
			FCK.Focus();
	};
	this.Events.FireEvent('OnStatusChange', A);
};
FCK.GetHTML = FCK.GetXHTML = function(A) {
	if (FCK.EditMode == FCK_EDITMODE_SOURCE)
		return FCK.EditingArea.Textarea.value;
	var B;
	var C = FCK.EditorDocument;
	if (FCKConfig.FullPage)
		B = FCKXHtml.GetXHTML(C.getElementsByTagName('html')[0], true, A);
	else {
		if (FCKConfig.IgnoreEmptyParagraphValue
				&& C.body.innerHTML == '<P>&nbsp;</P>')
			B = '';
		else
			B = FCKXHtml.GetXHTML(C.body, false, A);
	};
	B = FCK.ProtectEventsRestore(B);
	if (FCKBrowserInfo.IsIE)
		B = B.replace(FCKRegexLib.ToReplace, '$1');
	if (FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0)
		B = FCK.DocTypeDeclaration + '\n' + B;
	if (FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0)
		B = FCK.XmlDeclaration + '\n' + B;
	return FCKConfig.ProtectedSource.Revert(B);
};
FCK.UpdateLinkedField = function() {
	FCK.LinkedField.value = FCK.GetXHTML(FCKConfig.FormatOutput);
	FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');
};
FCK.RegisteredDoubleClickHandlers = new Object();
FCK.OnDoubleClick = function(A) {
	var B = FCK.RegisteredDoubleClickHandlers[A.tagName];
	if (B)
		B(A);
};
FCK.RegisterDoubleClickHandler = function(A, B) {
	FCK.RegisteredDoubleClickHandlers[B.toUpperCase()] = A;
};
FCK.OnAfterSetHTML = function() {
	FCKDocumentProcessor.Process(FCK.EditorDocument);
	FCKUndo.SaveUndoStep();
	FCK.Events.FireEvent('OnSelectionChange');
	FCK.Events.FireEvent('OnAfterSetHTML');
};
FCK.ProtectUrls = function(A) {
	A = A.replace(FCKRegexLib.ProtectUrlsA,
			'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');
	A = A.replace(FCKRegexLib.ProtectUrlsImg,
			'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');
	return A;
};
FCK.ProtectEvents = function(A) {
	return A.replace(FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags);
};
function _FCK_ProtectEvents_ReplaceTags(tagMatch) {
	return tagMatch.replace(FCKRegexLib.EventAttributes,
			_FCK_ProtectEvents_ReplaceEvents);
};
function _FCK_ProtectEvents_ReplaceEvents(eventMatch, attName) {
	return ' '
			+ attName
			+ '_fckprotectedatt="'
			+ eventMatch.ReplaceAll([/&/g, /'/g, /"/g, /=/g, /</g, />/g, /\r/g,
							/\n/g], ['&apos;', '&#39;', '&quot;', '&#61;',
							'&lt;', '&gt;', '&#10;', '&#13;']) + '"';
};
FCK.ProtectEventsRestore = function(A) {
	return A.replace(FCKRegexLib.ProtectedEvents,
			_FCK_ProtectEvents_RestoreEvents);
};
function _FCK_ProtectEvents_RestoreEvents(match, encodedOriginal) {
	return encodedOriginal.ReplaceAll([/&#39;/g, /&quot;/g, /&#61;/g, /&lt;/g,
					/&gt;/g, /&#10;/g, /&#13;/g, /&apos;/g], ["'", '"', '=',
					'<', '>', '\r', '\n', '&']);
};
FCK.IsDirty = function() {
	return (FCK_StartupValue != FCK.EditorDocument.body.innerHTML);
};
FCK.ResetIsDirty = function() {
	if (FCK.EditorDocument.body)
		FCK_StartupValue = FCK.EditorDocument.body.innerHTML;
};
FCK.SetHTML = function(A) {
	this.EditingArea.Mode = FCK.EditMode;
	if (FCK.EditMode == FCK_EDITMODE_WYSIWYG) {
		A = FCKConfig.ProtectedSource.Protect(A);
		A = FCK.ProtectEvents(A);
		A = FCK.ProtectUrls(A);
		if (FCKBrowserInfo.IsGecko) {
			A = A.replace(FCKRegexLib.StrongOpener, '<b$1');
			A = A.replace(FCKRegexLib.StrongCloser, '<\/b>');
			A = A.replace(FCKRegexLib.EmOpener, '<i$1');
			A = A.replace(FCKRegexLib.EmCloser, '<\/i>');
		} else if (FCKBrowserInfo.IsIE) {
			A = A.replace(FCKRegexLib.AbbrOpener, '<FCK:abbr$1');
			A = A.replace(FCKRegexLib.AbbrCloser, '<\/FCK:abbr>');
		};
		var B = '';
		if (FCKConfig.FullPage) {
			if (!FCKRegexLib.HeadOpener.test(A)) {
				if (!FCKRegexLib.HtmlOpener.test(A))
					A = '<html dir="' + FCKConfig.ContentLangDirection + '">'
							+ A + '</html>';
				A = A.replace(FCKRegexLib.HtmlOpener, '$&<head></head>');
			};
			FCK.DocTypeDeclaration = A.match(FCKRegexLib.DocTypeTag);
			if (FCKBrowserInfo.IsIE)
				B = FCK._GetBehaviorsStyle();
			else if (FCKConfig.ShowBorders)
				B = '<link href="'
						+ FCKConfig.FullBasePath
						+ 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';
			B += '<link href="' + FCKConfig.FullBasePath
					+ 'css/fck_internal.css'
					+ '" rel="stylesheet" type="text/css" _fcktemp="true" />';
			B = A.replace(FCKRegexLib.HeadCloser, B + '$&');
			if (FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test(A))
				B = B.replace(FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag);
		} else {
			B = FCKConfig.DocType + '<html dir="'
					+ FCKConfig.ContentLangDirection + '"';
			if (FCKBrowserInfo.IsIE
					&& !FCKRegexLib.Html4DocType.test(FCKConfig.DocType))
				B += ' style="overflow-y: scroll"';
			B += '><head><title></title>' + this._GetEditorAreaStyleTags()
					+ '<link href="' + FCKConfig.FullBasePath
					+ 'css/fck_internal.css'
					+ '" rel="stylesheet" type="text/css" _fcktemp="true" />';
			if (FCKBrowserInfo.IsIE)
				B += FCK._GetBehaviorsStyle();
			else if (FCKConfig.ShowBorders)
				B += '<link href="'
						+ FCKConfig.FullBasePath
						+ 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';
			B += FCK.TempBaseTag;
			B += '</head><body>';
			if (FCKBrowserInfo.IsGecko
					&& (A.length == 0 || FCKRegexLib.EmptyParagraph.test(A)))
				B += GECKO_BOGUS;
			else
				B += A;
			B += '</body></html>';
		};
		this.EditingArea.OnLoad = FCK_EditingArea_OnLoad;
		this.EditingArea.Start(B);
	} else {
		this.EditingArea.OnLoad = null;
		this.EditingArea.Start(A);
		this.EditingArea.Textarea._FCKShowContextMenu = true;
	};
	if (FCKBrowserInfo.IsGecko)
		window.onresize();
};
function FCK_EditingArea_OnLoad() {
	FCK.EditorWindow = FCK.EditingArea.Window;
	FCK.EditorDocument = FCK.EditingArea.Document;
	FCK.InitializeBehaviors();
	FCK.OnAfterSetHTML();
	if (FCK.Status != FCK_STATUS_NOTLOADED)
		return;
	FCK.ResetIsDirty();
	FCKTools.AttachToLinkedFieldFormSubmit(FCK.UpdateLinkedField);
	FCK.SetStatus(FCK_STATUS_ACTIVE);
};
FCK._GetEditorAreaStyleTags = function() {
	var A = '';
	var B = FCKConfig.EditorAreaCSS;
	for (var i = 0; i < B.length; i++)
		A += '<link href="' + B[i] + '" rel="stylesheet" type="text/css" />';
	return A;
};
var FCKFocusManager = FCK.FocusManager = new Object();
FCKFocusManager.IsLocked = false;
FCK.HasFocus = false;
FCKFocusManager.AddWindow = function(A, B) {
	var C;
	if (FCKBrowserInfo.IsIE)
		C = A.nodeType == 1 ? A : A.frameElement ? A.frameElement : A.document;
	else
		C = A.document;
	FCKTools.AddEventListener(C, 'blur', FCKFocusManager_Win_OnBlur);
	FCKTools.AddEventListener(C, 'focus', B
					? FCKFocusManager_Win_OnFocus_Area
					: FCKFocusManager_Win_OnFocus);
};
FCKFocusManager.RemoveWindow = function(A) {
	if (FCKBrowserInfo.IsIE)
		oTarget = A.nodeType == 1 ? A : A.frameElement
				? A.frameElement
				: A.document;
	else
		oTarget = A.document;
	FCKTools.RemoveEventListener(oTarget, 'blur', FCKFocusManager_Win_OnBlur);
	FCKTools.RemoveEventListener(oTarget, 'focus',
			FCKFocusManager_Win_OnFocus_Area);
	FCKTools.RemoveEventListener(oTarget, 'focus', FCKFocusManager_Win_OnFocus);
};
FCKFocusManager.Lock = function() {
	this.IsLocked = true;
};
FCKFocusManager.Unlock = function() {
	if (this._HasPendingBlur)
		FCKFocusManager._Timer = window.setTimeout(FCKFocusManager_FireOnBlur,
				100);
	this.IsLocked = false;
};
FCKFocusManager._ResetTimer = function() {
	this._HasPendingBlur = false;
	if (this._Timer) {
		window.clearTimeout(this._Timer);
		delete this._Timer;
	}
};
function FCKFocusManager_Win_OnBlur() {
	if (typeof(FCK) != 'undefined' && FCK.HasFocus) {
		FCKFocusManager._ResetTimer();
		FCKFocusManager._Timer = window.setTimeout(FCKFocusManager_FireOnBlur,
				100);
	}
};
function FCKFocusManager_FireOnBlur() {
	if (FCKFocusManager.IsLocked)
		FCKFocusManager._HasPendingBlur = true;
	else {
		FCK.HasFocus = false;
		FCK.Events.FireEvent("OnBlur");
	}
};
function FCKFocusManager_Win_OnFocus_Area() {
	FCKFocusManager_Win_OnFocus();
	FCK.Focus();
};
function FCKFocusManager_Win_OnFocus() {
	FCKFocusManager._ResetTimer();
	if (!FCK.HasFocus && !FCKFocusManager.IsLocked) {
		FCK.HasFocus = true;
		FCK.Events.FireEvent("OnFocus");
	}
}
FCK.Description = "FCKeditor for Internet Explorer 5.5+";
FCK._GetBehaviorsStyle = function() {
	if (!FCK._BehaviorsStyle) {
		var A = FCKConfig.FullBasePath;
		var B = '';
		var C;
		C = '<style type="text/css" _fcktemp="true">'
				+ 'INPUT { behavior: url(' + A
				+ 'css/behaviors/hiddenfield.htc) ; }';
		if (FCKConfig.ShowBorders)
			B = 'url(' + A + 'css/behaviors/showtableborders.htc)';
		C += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak';
		if (FCKConfig.DisableObjectResizing) {
			C += ',IMG';
			B += ' url(' + A + 'css/behaviors/disablehandles.htc)';
		};
		C += ' { behavior: url(' + A + 'css/behaviors/disablehandles.htc) ; }';
		if (B.length > 0)
			C += 'TABLE { behavior: ' + B + ' ; }';
		C += '</style>';
		FCK._BehaviorsStyle = C;
	};
	return FCK._BehaviorsStyle;
};
function Doc_OnMouseUp() {
	if (FCK.EditorWindow.event.srcElement.tagName == 'HTML') {
		FCK.Focus();
		FCK.EditorWindow.event.cancelBubble = true;
		FCK.EditorWindow.event.returnValue = false;
	}
};
function Doc_OnPaste() {
	if (FCK.Status == FCK_STATUS_COMPLETE)
		FCK.Events.FireEvent("OnPaste");
	return false;
};
function Doc_OnKeyDown() {
	var e = FCK.EditorWindow.event;
	switch (e.keyCode) {
		case 13 :
			if (FCKConfig.UseBROnCarriageReturn
					&& !(e.ctrlKey || e.altKey || e.shiftKey)) {
				Doc_OnKeyDownUndo();
				if (FCK.EditorDocument.queryCommandState('InsertOrderedList')
						|| FCK.EditorDocument
								.queryCommandState('InsertUnorderedList'))
					return true;
				FCK.InsertHtml('<br>&nbsp;');
				var oRange = FCK.EditorDocument.selection.createRange();
				oRange.moveStart('character', -1);
				oRange.select();
				FCK.EditorDocument.selection.clear();
				return false;
			}
			;
			break;
		case 8 :
			if (FCKSelection.GetType() == 'Control') {
				FCKSelection.Delete();
				return false;
			}
			;
			break;
		case 9 :
			if (FCKConfig.TabSpaces > 0
					&& !(e.ctrlKey || e.altKey || e.shiftKey)) {
				Doc_OnKeyDownUndo();
				FCK.InsertHtml(window.FCKTabHTML);
				return false;
			}
			;
			break;
		case 90 :
			if (e.ctrlKey && !(e.altKey || e.shiftKey)) {
				FCKUndo.Undo();
				return false;
			}
			;
			break;
		case 89 :
			if (e.ctrlKey && !(e.altKey || e.shiftKey)) {
				FCKUndo.Redo();
				return false;
			}
			;
			break;
	};
	if (!(e.keyCode >= 16 && e.keyCode <= 18))
		Doc_OnKeyDownUndo();
	return true;
};
function Doc_OnKeyDownUndo() {
	if (!FCKUndo.Typing) {
		FCKUndo.SaveUndoStep();
		FCKUndo.Typing = true;
		FCK.Events.FireEvent("OnSelectionChange");
	};
	FCKUndo.TypesCount++;
	if (FCKUndo.TypesCount > FCKUndo.MaxTypes) {
		FCKUndo.TypesCount = 0;
		FCKUndo.SaveUndoStep();
	}
};
function Doc_OnDblClick() {
	FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);
	FCK.EditorWindow.event.cancelBubble = true;
};
function Doc_OnSelectionChange() {
	FCK.Events.FireEvent("OnSelectionChange");
};
FCK.InitializeBehaviors = function(A) {
	this.EditorDocument.attachEvent('onmouseup', Doc_OnMouseUp);
	this.EditorDocument.body.attachEvent('onpaste', Doc_OnPaste);
	FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);
	if (FCKConfig.TabSpaces > 0) {
		window.FCKTabHTML = '';
		for (i = 0; i < FCKConfig.TabSpaces; i++)
			window.FCKTabHTML += "&nbsp;";
	};
	this.EditorDocument.attachEvent("onkeydown", Doc_OnKeyDown);
	this.EditorDocument.attachEvent("ondblclick", Doc_OnDblClick);
	this.EditorDocument.attachEvent("onselectionchange", Doc_OnSelectionChange);
};
FCK.InsertHtml = function(A) {
	A = FCKConfig.ProtectedSource.Protect(A);
	A = FCK.ProtectUrls(A);
	FCK.Focus();
	FCKUndo.SaveUndoStep();
	var B = FCK.EditorDocument.selection;
	if (B.type.toLowerCase() == 'control')
		B.clear();
	B.createRange().pasteHTML(A);
	FCKDocumentProcessor.Process(FCK.EditorDocument);
};
FCK.SetInnerHtml = function(A) {
	var B = FCK.EditorDocument;
	B.body.innerHTML = '<div id="__fakeFCKRemove__">&nbsp;</div>' + A;
	B.getElementById('__fakeFCKRemove__').removeNode(true);
};
var FCK_PreloadImages_Count = 0;
var FCK_PreloadImages_Images = new Array();
function FCK_PreloadImages() {
	var aImages = FCKConfig.PreloadImages || [];
	if (typeof(aImages) == 'string')
		aImages = aImages.split(';');
	aImages.push(FCKConfig.SkinPath + 'fck_strip.gif');
	FCK_PreloadImages_Count = aImages.length;
	var aImageElements = new Array();
	for (var i = 0; i < aImages.length; i++) {
		var eImg = document.createElement('img');
		eImg.onload = eImg.onerror = FCK_PreloadImages_OnImage;
		eImg.src = aImages[i];
		FCK_PreloadImages_Images[i] = eImg;
	}
};
function FCK_PreloadImages_OnImage() {
	if ((--FCK_PreloadImages_Count) == 0)
		FCKTools.RunFunction(LoadToolbarSetup);
};
function Document_OnContextMenu() {
	return (event.srcElement._FCKShowContextMenu == true);
};
document.oncontextmenu = Document_OnContextMenu;
function FCK_Cleanup() {
	this.EditorWindow = null;
	this.EditorDocument = null;
}
FCK.RedirectNamedCommands = new Object();
FCK.ExecuteNamedCommand = function(A, B, C) {
	FCKUndo.SaveUndoStep();
	if (!C && FCK.RedirectNamedCommands[A] != null)
		FCK.ExecuteRedirectedNamedCommand(A, B);
	else {
		FCK.Focus();
		FCK.EditorDocument.execCommand(A, false, B);
		FCK.Events.FireEvent('OnSelectionChange');
	};
	FCKUndo.SaveUndoStep();
};
FCK.GetNamedCommandState = function(A) {
	try {
		if (!FCK.EditorDocument.queryCommandEnabled(A))
			return FCK_TRISTATE_DISABLED;
		else
			return FCK.EditorDocument.queryCommandState(A)
					? FCK_TRISTATE_ON
					: FCK_TRISTATE_OFF;
	} catch (e) {
		return FCK_TRISTATE_OFF;
	}
};
FCK.GetNamedCommandValue = function(A) {
	var B = '';
	var C = FCK.GetNamedCommandState(A);
	if (C == FCK_TRISTATE_DISABLED)
		return null;
	try {
		B = this.EditorDocument.queryCommandValue(A);
	} catch (e) {
	};
	return B ? B : '';
};
FCK.PasteFromWord = function() {
	FCKDialog.OpenDialog('FCKDialog_Paste', FCKLang.PasteFromWord,
			'dialog/fck_paste.html', 400, 330, 'Word');
};
FCK.Preview = function() {
	var A = FCKConfig.ScreenWidth * 0.8;
	var B = FCKConfig.ScreenHeight * 0.7;
	var C = (FCKConfig.ScreenWidth - A) / 2;
	var D = window
			.open(
					'',
					null,
					'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='
							+ A + ',height=' + B + ',left=' + C);
	var E;
	if (FCKConfig.FullPage) {
		if (FCK.TempBaseTag.length > 0)
			E = FCK.TempBaseTag + FCK.GetXHTML();
		else
			E = FCK.GetXHTML();
	} else {
		E = FCKConfig.DocType + '<html dir="' + FCKConfig.ContentLangDirection
				+ '">' + '<head>' + FCK.TempBaseTag + '<title>'
				+ FCKLang.Preview + '</title>' + FCK._GetEditorAreaStyleTags()
				+ '</head><body>' + FCK.GetXHTML() + '</body></html>';
	};
	D.document.write(E);
	D.document.close();
};
FCK.SwitchEditMode = function(A) {
	var B = (FCK.EditMode == FCK_EDITMODE_WYSIWYG);
	var C;
	if (B) {
		if (!A && FCKBrowserInfo.IsIE)
			FCKUndo.SaveUndoStep();
		C = FCK.GetXHTML(FCKConfig.FormatSource);
	} else
		C = this.EditingArea.Textarea.value;
	FCK.EditMode = B ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG;
	FCK.SetHTML(C);
	FCK.Focus();
	FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet);
};
FCK.CreateElement = function(A) {
	var e = FCK.EditorDocument.createElement(A);
	return FCK.InsertElementAndGetIt(e);
};
FCK.InsertElementAndGetIt = function(e) {
	e.setAttribute('FCKTempLabel', 'true');
	this.InsertElement(e);
	var A = FCK.EditorDocument.getElementsByTagName(e.tagName);
	for (var i = 0; i < A.length; i++) {
		if (A[i].getAttribute('FCKTempLabel')) {
			A[i].removeAttribute('FCKTempLabel');
			return A[i];
		}
	};
	return null;
};
FCK.Paste = function() {
	if (FCKConfig.ForcePasteAsPlainText) {
		FCK.PasteAsPlainText();
		return;
	};
	var A = FCK.GetClipboardHTML();
	if (FCKConfig.AutoDetectPasteFromWord) {
		var B = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;
		if (B.test(A)) {
			if (confirm(FCKLang["PasteWordConfirm"])) {
				FCK.PasteFromWord();
				return;
			}
		}
	};
	FCK.InsertHtml(A);
};
FCK.PasteAsPlainText = function() {
	var A = FCKTools.HTMLEncode(clipboardData.getData("Text"));
	A = A.replace(/\n/g, '<BR>');
	this.InsertHtml(A);
};
FCK.InsertElement = function(A) {
	FCK.InsertHtml(A.outerHTML);
};
FCK.GetClipboardHTML = function() {
	var A = document.getElementById('___FCKHiddenDiv');
	if (!A) {
		var A = document.createElement('DIV');
		A.id = '___FCKHiddenDiv';
		A.style.visibility = 'hidden';
		A.style.overflow = 'hidden';
		A.style.position = 'absolute';
		A.style.width = 1;
		A.style.height = 1;
		document.body.appendChild(A);
	};
	A.innerHTML = '';
	var C = document.body.createTextRange();
	C.moveToElementText(A);
	C.execCommand('Paste');
	var D = A.innerHTML;
	A.innerHTML = '';
	return D;
};
FCK.AttachToOnSelectionChange = function(A) {
	this.Events.AttachEvent('OnSelectionChange', A);
};
FCK.CreateLink = function(A) {
	FCK.ExecuteNamedCommand('Unlink');
	if (A.length > 0) {
		var B = 'javascript:void(0);/*' + (new Date().getTime()) + '*/';
		FCK.ExecuteNamedCommand('CreateLink', B);
		var C = this.EditorDocument.links;
		for (i = 0; i < C.length; i++) {
			var D = C[i];
			if (D.href == B) {
				var E = D.innerHTML;
				D.href = A;
				D.innerHTML = E;
				return D;
			}
		}
	}
};
var FCKSelection = FCK.Selection = new Object();
FCKSelection.GetType = function() {
	return FCK.EditorDocument.selection.type;
};
FCKSelection.GetSelectedElement = function() {
	if (this.GetType() == 'Control') {
		var A = FCK.EditorDocument.selection.createRange();
		if (A && A.item)
			return FCK.EditorDocument.selection.createRange().item(0);
	}
};
FCKSelection.GetParentElement = function() {
	switch (this.GetType()) {
		case 'Control' :
			return FCKSelection.GetSelectedElement().parentElement;
		case 'None' :
			return;
		default :
			return FCK.EditorDocument.selection.createRange().parentElement();
	}
};
FCKSelection.SelectNode = function(A) {
	FCK.Focus();
	FCK.EditorDocument.selection.empty();
	try {
		var B = FCK.EditorDocument.body.createControlRange();
		B.addElement(A);
	} catch (e) {
		var B = FCK.EditorDocument.selection.createRange();
		B.moveToElementText(A);
	};
	B.select();
};
FCKSelection.Collapse = function(A) {
	FCK.Focus();
	if (this.GetType() == 'Text') {
		var B = FCK.EditorDocument.selection.createRange();
		B.collapse(A == null || A === true);
		B.select();
	}
};
FCKSelection.HasAncestorNode = function(A) {
	var B;
	if (FCK.EditorDocument.selection.type == "Control") {
		B = this.GetSelectedElement();
	} else {
		var C = FCK.EditorDocument.selection.createRange();
		B = C.parentElement();
	};
	while (B) {
		if (B.tagName == A)
			return true;
		B = B.parentNode;
	};
	return false;
};
FCKSelection.MoveToAncestorNode = function(A) {
	var B;
	if (FCK.EditorDocument.selection.type == "Control") {
		var C = FCK.EditorDocument.selection.createRange();
		for (i = 0; i < C.length; i++) {
			if (C(i).parentNode) {
				B = C(i).parentNode;
				break;
			}
		}
	} else {
		var C = FCK.EditorDocument.selection.createRange();
		B = C.parentElement();
	};
	while (B && B.nodeName != A)
		B = B.parentNode;
	return B;
};
FCKSelection.Delete = function() {
	var A = FCK.EditorDocument.selection;
	if (A.type.toLowerCase() != "none") {
		A.clear();
	};
	return A;
};
var FCKTableHandler = new Object();
FCKTableHandler.InsertRow = function() {
	var A = FCKSelection.MoveToAncestorNode("TR");
	if (!A)
		return;
	var B = A.cloneNode(true);
	A.parentNode.insertBefore(B, A);
	FCKTableHandler.ClearRow(A);
};
FCKTableHandler.DeleteRows = function(A) {
	if (!A)
		A = FCKSelection.MoveToAncestorNode("TR");
	if (!A)
		return;
	var B = FCKTools.GetElementAscensor(A, 'TABLE');
	if (B.rows.length == 1) {
		FCKTableHandler.DeleteTable(B);
		return;
	};
	A.parentNode.removeChild(A);
};
FCKTableHandler.DeleteTable = function(A) {
	if (!A) {
		var A = FCKSelection.GetSelectedElement();
		if (!A || A.tagName != 'TABLE')
			A = FCKSelection.MoveToAncestorNode("TABLE");
	};
	if (!A)
		return;
	FCKSelection.SelectNode(A);
	FCKSelection.Collapse();
	A.parentNode.removeChild(A);
};
FCKTableHandler.InsertColumn = function() {
	var A = FCKSelection.MoveToAncestorNode("TD");
	if (!A)
		A = FCKSelection.MoveToAncestorNode("TH");
	if (!A)
		return;
	var B = FCKTools.GetElementAscensor(A, 'TABLE');
	var C = A.cellIndex + 1;
	for (var i = 0; i < B.rows.length; i++) {
		var D = B.rows[i];
		if (D.cells.length < C)
			continue;
		A = D.cells[C - 1].cloneNode(false);
		if (FCKBrowserInfo.IsGecko)
			A.innerHTML = GECKO_BOGUS;
		var E = D.cells[C];
		if (E)
			D.insertBefore(A, E);
		else
			D.appendChild(A);
	}
};
FCKTableHandler.DeleteColumns = function() {
	var A = FCKSelection.MoveToAncestorNode('TD')
			|| FCKSelection.MoveToAncestorNode('TH');
	if (!A)
		return;
	var B = FCKTools.GetElementAscensor(A, 'TABLE');
	var C = A.cellIndex;
	for (var i = B.rows.length - 1; i >= 0; i--) {
		var D = B.rows[i];
		if (C == 0 && D.cells.length == 1) {
			FCKTableHandler.DeleteRows(D);
			continue;
		};
		if (D.cells[C])
			D.removeChild(D.cells[C]);
	}
};
FCKTableHandler.InsertCell = function(A) {
	var B = A ? A : FCKSelection.MoveToAncestorNode("TD");
	if (!B)
		return;
	var C = FCK.EditorDocument.createElement("TD");
	if (FCKBrowserInfo.IsGecko)
		C.innerHTML = GECKO_BOGUS;
	if (B.cellIndex == B.parentNode.cells.length - 1) {
		B.parentNode.appendChild(C);
	} else {
		B.parentNode.insertBefore(C, B.nextSibling);
	};
	return C;
};
FCKTableHandler.DeleteCell = function(A) {
	if (A.parentNode.cells.length == 1) {
		FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A, 'TR'));
		return;
	};
	A.parentNode.removeChild(A);
};
FCKTableHandler.DeleteCells = function() {
	var A = FCKTableHandler.GetSelectedCells();
	for (var i = A.length - 1; i >= 0; i--) {
		FCKTableHandler.DeleteCell(A[i]);
	}
};
FCKTableHandler.MergeCells = function() {
	var A = FCKTableHandler.GetSelectedCells();
	if (A.length < 2)
		return;
	if (A[0].parentNode != A[A.length - 1].parentNode)
		return;
	var B = isNaN(A[0].colSpan) ? 1 : A[0].colSpan;
	var C = '';
	var D = FCK.EditorDocument.createDocumentFragment();
	for (var i = A.length - 1; i >= 0; i--) {
		var E = A[i];
		for (var c = E.childNodes.length - 1; c >= 0; c--) {
			var F = E.removeChild(E.childNodes[c]);
			if ((F.hasAttribute && F.hasAttribute('_moz_editor_bogus_node'))
					|| (F.getAttribute && F.getAttribute('type', 2) == '_moz'))
				continue;
			D.insertBefore(F, D.firstChild);
		};
		if (i > 0) {
			B += isNaN(E.colSpan) ? 1 : E.colSpan;
			FCKTableHandler.DeleteCell(E);
		}
	};
	A[0].colSpan = B;
	if (FCKBrowserInfo.IsGecko && D.childNodes.length == 0)
		A[0].innerHTML = GECKO_BOGUS;
	else
		A[0].appendChild(D);
};
FCKTableHandler.SplitCell = function() {
	var A = FCKTableHandler.GetSelectedCells();
	if (A.length != 1)
		return;
	var B = this._CreateTableMap(A[0].parentNode.parentNode);
	var C = FCKTableHandler
			._GetCellIndexSpan(B, A[0].parentNode.rowIndex, A[0]);
	var D = this._GetCollumnCells(B, C);
	for (var i = 0; i < D.length; i++) {
		if (D[i] == A[0]) {
			var E = this.InsertCell(A[0]);
			if (!isNaN(A[0].rowSpan) && A[0].rowSpan > 1)
				E.rowSpan = A[0].rowSpan;
		} else {
			if (isNaN(D[i].colSpan))
				D[i].colSpan = 2;
			else
				D[i].colSpan += 1;
		}
	}
};
FCKTableHandler._GetCellIndexSpan = function(A, B, C) {
	if (A.length < B + 1)
		return null;
	var D = A[B];
	for (var c = 0; c < D.length; c++) {
		if (D[c] == C)
			return c;
	};
	return null;
};
FCKTableHandler._GetCollumnCells = function(A, B) {
	var C = new Array();
	for (var r = 0; r < A.length; r++) {
		var D = A[r][B];
		if (D && (C.length == 0 || C[C.length - 1] != D))
			C[C.length] = D;
	};
	return C;
};
FCKTableHandler._CreateTableMap = function(A) {
	var B = A.rows;
	var r = -1;
	var C = new Array();
	for (var i = 0; i < B.length; i++) {
		r++;
		if (!C[r])
			C[r] = new Array();
		var c = -1;
		for (var j = 0; j < B[i].cells.length; j++) {
			var D = B[i].cells[j];
			c++;
			while (C[r][c])
				c++;
			var E = isNaN(D.colSpan) ? 1 : D.colSpan;
			var F = isNaN(D.rowSpan) ? 1 : D.rowSpan;
			for (var G = 0; G < F; G++) {
				if (!C[r + G])
					C[r + G] = new Array();
				for (var H = 0; H < E; H++) {
					C[r + G][c + H] = B[i].cells[j];
				}
			};
			c += E - 1;
		}
	};
	return C;
};
FCKTableHandler.ClearRow = function(A) {
	var B = A.cells;
	for (var i = 0; i < B.length; i++) {
		if (FCKBrowserInfo.IsGecko)
			B[i].innerHTML = GECKO_BOGUS;
		else
			B[i].innerHTML = '';
	}
};
FCKTableHandler.GetSelectedCells = function() {
	var A = new Array();
	var B = FCK.EditorDocument.selection.createRange();
	var C = FCKSelection.GetParentElement();
	if (C && C.tagName.Equals('TD', 'TH'))
		A[0] = C;
	else {
		var C = FCKSelection.MoveToAncestorNode("TABLE");
		if (C) {
			for (var i = 0; i < C.cells.length; i++) {
				var E = FCK.EditorDocument.selection.createRange();
				E.moveToElementText(C.cells[i]);
				if (B.inRange(E)
						|| (B.compareEndPoints('StartToStart', E) >= 0 && B
								.compareEndPoints('StartToEnd', E) <= 0)
						|| (B.compareEndPoints('EndToStart', E) >= 0 && B
								.compareEndPoints('EndToEnd', E) <= 0)) {
					A[A.length] = C.cells[i];
				}
			}
		}
	};
	return A;
};
var FCKXml = function() {
	this.Error = false;
};
FCKXml.prototype.LoadUrl = function(A) {
	this.Error = false;
	var B = FCKTools.CreateXmlObject('XmlHttp');
	if (!B) {
		this.Error = true;
		return;
	};
	B.open("GET", A, false);
	B.send(null);
	if (B.status == 200 || B.status == 304)
		this.DOMDocument = B.responseXML;
	else if (B.status == 0 && B.readyState == 4) {
		this.DOMDocument = FCKTools.CreateXmlObject('DOMDocument');
		this.DOMDocument.async = false;
		this.DOMDocument.resolveExternals = false;
		this.DOMDocument.loadXML(B.responseText);
	} else {
		this.Error = true;
		alert('Error loading "' + A + '"');
	}
};
FCKXml.prototype.SelectNodes = function(A, B) {
	if (this.Error)
		return new Array();
	if (B)
		return B.selectNodes(A);
	else
		return this.DOMDocument.selectNodes(A);
};
FCKXml.prototype.SelectSingleNode = function(A, B) {
	if (this.Error)
		return;
	if (B)
		return B.selectSingleNode(A);
	else
		return this.DOMDocument.selectSingleNode(A);
}
var FCKStyleDef = function(A, B) {
	this.Name = A;
	this.Element = B.toUpperCase();
	this.IsObjectElement = FCKRegexLib.ObjectElements.test(this.Element);
	this.Attributes = new Object();
};
FCKStyleDef.prototype.AddAttribute = function(A, B) {
	this.Attributes[A] = B;
};
FCKStyleDef.prototype.GetOpenerTag = function() {
	var s = '<' + this.Element;
	for (var a in this.Attributes)
		s += ' ' + a + '="' + this.Attributes[a] + '"';
	return s + '>';
};
FCKStyleDef.prototype.GetCloserTag = function() {
	return '</' + this.Element + '>';
};
FCKStyleDef.prototype.RemoveFromSelection = function() {
	if (FCKSelection.GetType() == 'Control')
		this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection
				.GetSelectedElement());
	else
		this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection
				.GetParentElement());
}
FCKStyleDef.prototype.ApplyToSelection = function() {
	var A = FCK.ToolbarSet.CurrentInstance.EditorDocument.selection;
	if (A.type == 'Text') {
		var B = A.createRange();
		var e = document.createElement(this.Element);
		e.innerHTML = B.htmlText;
		this._AddAttributes(e);
		this._RemoveDuplicates(e);
		B.pasteHTML(e.outerHTML);
	} else if (A.type == 'Control') {
		var C = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();
		if (C.tagName == this.Element)
			this._AddAttributes(C);
	}
};
FCKStyleDef.prototype._AddAttributes = function(A) {
	for (var a in this.Attributes) {
		switch (a.toLowerCase()) {
			case 'style' :
				A.style.cssText = this.Attributes[a];
				break;
			case 'class' :
				A.setAttribute('className', this.Attributes[a], 0);
				break;
			case 'src' :
				A.setAttribute('_fcksavedurl', this.Attributes[a], 0);
			default :
				A.setAttribute(a, this.Attributes[a], 0);
		}
	}
};
FCKStyleDef.prototype._RemoveDuplicates = function(A) {
	for (var i = 0; i < A.children.length; i++) {
		var B = A.children[i];
		this._RemoveDuplicates(B);
		if (this.IsEqual(B))
			FCKTools.RemoveOuterTags(B);
	}
};
FCKStyleDef.prototype.IsEqual = function(e) {
	if (e.tagName != this.Element)
		return false;
	for (var a in this.Attributes) {
		switch (a.toLowerCase()) {
			case 'style' :
				if (e.style.cssText.toLowerCase() != this.Attributes[a]
						.toLowerCase())
					return false;
				break;
			case 'class' :
				if (e.getAttribute('className', 0) != this.Attributes[a])
					return false;
				break;
			default :
				if (e.getAttribute(a, 0) != this.Attributes[a])
					return false;
		}
	};
	return true;
};
FCKStyleDef.prototype._RemoveMe = function(A) {
	if (!A)
		return;
	var B = A.parentElement;
	if (this.IsEqual(A)) {
		if (this.IsObjectElement) {
			for (var a in this.Attributes) {
				switch (a.toLowerCase()) {
					case 'class' :
						A.removeAttribute('className', 0);
						break;
					default :
						A.removeAttribute(a, 0);
				}
			};
			return;
		} else
			FCKTools.RemoveOuterTags(A);
	};
	this._RemoveMe(B);
}
var FCKStylesLoader = function() {
	this.Styles = new Object();
	this.StyleGroups = new Object();
	this.Loaded = false;
	this.HasObjectElements = false;
};
FCKStylesLoader.prototype.Load = function(A) {
	var B = new FCKXml();
	B.LoadUrl(A);
	var C = B.SelectNodes('Styles/Style');
	for (var i = 0; i < C.length; i++) {
		var D = C[i].attributes.getNamedItem('element').value.toUpperCase();
		var E = new FCKStyleDef(C[i].attributes.getNamedItem('name').value, D);
		if (E.IsObjectElement)
			this.HasObjectElements = true;
		var F = B.SelectNodes('Attribute', C[i]);
		for (var j = 0; j < F.length; j++) {
			var G = F[j].attributes.getNamedItem('name').value;
			var H = F[j].attributes.getNamedItem('value').value;
			if (G.toLowerCase() == 'style') {
				var I = document.createElement('SPAN');
				I.style.cssText = H;
				H = I.style.cssText;
			};
			E.AddAttribute(G, H);
		};
		this.Styles[E.Name] = E;
		var J = this.StyleGroups[D];
		if (J == null) {
			this.StyleGroups[D] = new Array();
			J = this.StyleGroups[D];
		};
		J[J.length] = E;
	};
	this.Loaded = true;
}
var FCKNamedCommand = function(A) {
	this.Name = A;
};
FCKNamedCommand.prototype.Execute = function() {
	FCK.ExecuteNamedCommand(this.Name);
};
FCKNamedCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandState(this.Name);
};
var FCKDialogCommand = function(A, B, C, D, E, F, G) {
	this.Name = A;
	this.Title = B;
	this.Url = C;
	this.Width = D;
	this.Height = E;
	this.GetStateFunction = F;
	this.GetStateParam = G;
};
FCKDialogCommand.prototype.Execute = function() {
	FCKDialog.OpenDialog('FCKDialog_' + this.Name, this.Title, this.Url,
			this.Width, this.Height);
};
FCKDialogCommand.prototype.GetState = function() {
	if (this.GetStateFunction)
		return this.GetStateFunction(this.GetStateParam);
	else
		return FCK_TRISTATE_OFF;
};
var FCKUndefinedCommand = function() {
	this.Name = 'Undefined';
};
FCKUndefinedCommand.prototype.Execute = function() {
	alert(FCKLang.NotImplemented);
};
FCKUndefinedCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
};
var FCKFontNameCommand = function() {
	this.Name = 'FontName';
};
FCKFontNameCommand.prototype.Execute = function(A) {
	if (A == null || A == "") {
	} else
		FCK.ExecuteNamedCommand('FontName', A);
};
FCKFontNameCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandValue('FontName');
};
var FCKFontSizeCommand = function() {
	this.Name = 'FontSize';
};
FCKFontSizeCommand.prototype.Execute = function(A) {
	if (typeof(A) == 'string')
		A = parseInt(A);
	if (A == null || A == '') {
		FCK.ExecuteNamedCommand('FontSize', 3);
	} else
		FCK.ExecuteNamedCommand('FontSize', A);
};
FCKFontSizeCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandValue('FontSize');
};
var FCKFormatBlockCommand = function() {
	this.Name = 'FormatBlock';
};
FCKFormatBlockCommand.prototype.Execute = function(A) {
	if (A == null || A == '')
		FCK.ExecuteNamedCommand('FormatBlock', '<P>');
	else if (A == 'div' && FCKBrowserInfo.IsGecko)
		FCK.ExecuteNamedCommand('FormatBlock', 'div');
	else
		FCK.ExecuteNamedCommand('FormatBlock', '<' + A + '>');
};
FCKFormatBlockCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandValue('FormatBlock');
};
var FCKPreviewCommand = function() {
	this.Name = 'Preview';
};
FCKPreviewCommand.prototype.Execute = function() {
	FCK.Preview();
};
FCKPreviewCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
};
var FCKSaveCommand = function() {
	this.Name = 'Save';
};
FCKSaveCommand.prototype.Execute = function() {/* FCK.EditorDocument.execCommand("SaveAs",false,"C:\\code.htm"); */
	try {
		parent.handleSubmit();
	} catch (error) {
	}
};
FCKSaveCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
};
var FCKNewPageCommand = function() {
	this.Name = 'NewPage';
};
FCKNewPageCommand.prototype.Execute = function() {
	FCKUndo.SaveUndoStep();
	FCK.SetHTML('');
	FCKUndo.Typing = true;
};
FCKNewPageCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
};
var FCKSourceCommand = function() {
	this.Name = 'Source';
};
FCKSourceCommand.prototype.Execute = function() {
	if (FCKConfig.SourcePopup) {
		var A = FCKConfig.ScreenWidth * 0.65;
		var B = FCKConfig.ScreenHeight * 0.65;
		FCKDialog.OpenDialog('FCKDialog_Source', FCKLang.Source,
				'dialog/fck_source.html', A, B, null, null, true);
	} else
		FCK.SwitchEditMode();
};
FCKSourceCommand.prototype.GetState = function() {
	return (FCK.EditMode == FCK_EDITMODE_WYSIWYG
			? FCK_TRISTATE_OFF
			: FCK_TRISTATE_ON);
};
var FCKUndoCommand = function() {
	this.Name = 'Undo';
};
FCKUndoCommand.prototype.Execute = function() {
	if (FCKBrowserInfo.IsIE)
		FCKUndo.Undo();
	else
		FCK.ExecuteNamedCommand('Undo');
};
FCKUndoCommand.prototype.GetState = function() {
	if (FCKBrowserInfo.IsIE)
		return (FCKUndo.CheckUndoState()
				? FCK_TRISTATE_OFF
				: FCK_TRISTATE_DISABLED);
	else
		return FCK.GetNamedCommandState('Undo');
};
var FCKRedoCommand = function() {
	this.Name = 'Redo';
};
FCKRedoCommand.prototype.Execute = function() {
	if (FCKBrowserInfo.IsIE)
		FCKUndo.Redo();
	else
		FCK.ExecuteNamedCommand('Redo');
};
FCKRedoCommand.prototype.GetState = function() {
	if (FCKBrowserInfo.IsIE)
		return (FCKUndo.CheckRedoState()
				? FCK_TRISTATE_OFF
				: FCK_TRISTATE_DISABLED);
	else
		return FCK.GetNamedCommandState('Redo');
};
var FCKPageBreakCommand = function() {
	this.Name = 'PageBreak';
};
FCKPageBreakCommand.prototype.Execute = function() {
	var e = FCK.EditorDocument.createElement('DIV');
	e.style.pageBreakAfter = 'always';
	e.innerHTML = '<span style="DISPLAY:none">&nbsp;</span>';
	var A = FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak', e);
	A = FCK.InsertElement(A);
};
FCKPageBreakCommand.prototype.GetState = function() {
	return 0;
};
var FCKUnlinkCommand = function() {
	this.Name = 'Unlink';
};
FCKUnlinkCommand.prototype.Execute = function() {
	if (FCKBrowserInfo.IsGecko) {
		var A = FCK.Selection.MoveToAncestorNode('A');
		if (A)
			FCK.Selection.SelectNode(A);
	};
	FCK.ExecuteNamedCommand(this.Name);
	if (FCKBrowserInfo.IsGecko)
		FCK.Selection.Collapse(true);
};
FCKUnlinkCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandState(this.Name);
}
var FCKSpellCheckCommand = function() {
	this.Name = 'SpellCheck';
	this.IsEnabled = (FCKConfig.SpellChecker == 'ieSpell' || FCKConfig.SpellChecker == 'SpellerPages');
};
FCKSpellCheckCommand.prototype.Execute = function() {
	switch (FCKConfig.SpellChecker) {
		case 'ieSpell' :
			this._RunIeSpell();
			break;
		case 'SpellerPages' :
			FCKDialog.OpenDialog('FCKDialog_SpellCheck', 'Spell Check',
					'dialog/fck_spellerpages.html', 440, 480);
			break;
	}
};
FCKSpellCheckCommand.prototype._RunIeSpell = function() {
	try {
		var A = new ActiveXObject("ieSpell.ieSpellExtension");
		A.CheckAllLinkedDocuments(FCK.EditorDocument);
	} catch (e) {
		if (e.number == -2146827859) {
			if (confirm(FCKLang.IeSpellDownload))
				window.open(FCKConfig.IeSpellDownloadUrl, 'IeSpellDownload');
		} else
			alert('Error Loading ieSpell: ' + e.message + ' (' + e.number + ')');
	}
};
FCKSpellCheckCommand.prototype.GetState = function() {
	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED;
}
var FCKTextColorCommand = function(A) {
	this.Name = A == 'ForeColor' ? 'TextColor' : 'BGColor';
	this.Type = A;
	var B;
	if (FCKBrowserInfo.IsIE)
		B = window;
	else if (FCK.ToolbarSet._IFrame)
		B = FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);
	else
		B = window.parent;
	this._Panel = new FCKPanel(B, true);
	this._Panel.AppendStyleSheet(FCKConfig.SkinPath + 'fck_editor.css');
	this._Panel.MainNode.className = 'FCK_Panel';
	this._CreatePanelBody(this._Panel.Document, this._Panel.MainNode);
	FCKTools.DisableSelection(this._Panel.Document.body);
};
FCKTextColorCommand.prototype.Execute = function(A, B, C) {
	FCK._ActiveColorPanelType = this.Type;
	this._Panel.Show(A, B, C);
};
FCKTextColorCommand.prototype.SetColor = function(A) {
	if (FCK._ActiveColorPanelType == 'ForeColor')
		FCK.ExecuteNamedCommand('ForeColor', A);
	else if (FCKBrowserInfo.IsGeckoLike) {
		if (FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN)
			FCK.EditorDocument.execCommand('useCSS', false, false);
		FCK.ExecuteNamedCommand('hilitecolor', A);
		if (FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN)
			FCK.EditorDocument.execCommand('useCSS', false, true);
	} else
		FCK.ExecuteNamedCommand('BackColor', A);
	delete FCK._ActiveColorPanelType;
};
FCKTextColorCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
};
function FCKTextColorCommand_OnMouseOver() {
	this.className = 'ColorSelected';
};
function FCKTextColorCommand_OnMouseOut() {
	this.className = 'ColorDeselected';
};
function FCKTextColorCommand_OnClick() {
	this.className = 'ColorDeselected';
	this.Command.SetColor('#' + this.Color);
	this.Command._Panel.Hide();
};
function FCKTextColorCommand_AutoOnClick() {
	this.className = 'ColorDeselected';
	this.Command.SetColor('');
	this.Command._Panel.Hide();
};
function FCKTextColorCommand_MoreOnClick() {
	this.className = 'ColorDeselected';
	this.Command._Panel.Hide();
	FCKDialog.OpenDialog('FCKDialog_Color', FCKLang.DlgColorTitle,
			'dialog/fck_colorselector.html', 400, 330, this.Command.SetColor);
};
FCKTextColorCommand.prototype._CreatePanelBody = function(A, B) {
	function CreateSelectionDiv() {
		var C = A.createElement("DIV");
		C.className = 'ColorDeselected';
		C.onmouseover = FCKTextColorCommand_OnMouseOver;
		C.onmouseout = FCKTextColorCommand_OnMouseOut;
		return C;
	};
	var D = B.appendChild(A.createElement("TABLE"));
	D.className = 'ForceBaseFont';
	D.style.tableLayout = 'fixed';
	D.cellPadding = 0;
	D.cellSpacing = 0;
	D.border = 0;
	D.width = 150;
	var E = D.insertRow(-1).insertCell(-1);
	E.colSpan = 8;
	var C = E.appendChild(CreateSelectionDiv());
	C.innerHTML = '<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center">'
			+ FCKLang.ColorAutomatic + '</td>\</tr>\</table>';
	C.Command = this;
	C.onclick = FCKTextColorCommand_AutoOnClick;
	var G = FCKConfig.FontColors.toString().split(',');
	var H = 0;
	while (H < G.length) {
		var I = D.insertRow(-1);
		for (var i = 0; i < 8 && H < G.length; i++, H++) {
			C = I.insertCell(-1).appendChild(CreateSelectionDiv());
			C.Color = G[H];
			C.innerHTML = '<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'
					+ G[H] + '"></div></div>';
			C.Command = this;
			C.onclick = FCKTextColorCommand_OnClick;
		}
	};
	E = D.insertRow(-1).insertCell(-1);
	E.colSpan = 8;
	C = E.appendChild(CreateSelectionDiv());
	C.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'
			+ FCKLang.ColorMoreColors + '</td></tr></table>';
	C.Command = this;
	C.onclick = FCKTextColorCommand_MoreOnClick;
}
var FCKPastePlainTextCommand = function() {
	this.Name = 'PasteText';
};
FCKPastePlainTextCommand.prototype.Execute = function() {
	FCK.PasteAsPlainText();
};
FCKPastePlainTextCommand.prototype.GetState = function() {
	return FCK.GetNamedCommandState('Paste');
};
var FCKPasteWordCommand = function() {
	this.Name = 'PasteWord';
};
FCKPasteWordCommand.prototype.Execute = function() {
	FCK.PasteFromWord();
};
FCKPasteWordCommand.prototype.GetState = function() {
	if (FCKConfig.ForcePasteAsPlainText)
		return FCK_TRISTATE_DISABLED;
	else
		return FCK.GetNamedCommandState('Paste');
};
var FCKTableCommand = function(A) {
	this.Name = A;
};
FCKTableCommand.prototype.Execute = function() {
	FCKUndo.SaveUndoStep();
	switch (this.Name) {
		case 'TableInsertRow' :
			FCKTableHandler.InsertRow();
			break;
		case 'TableDeleteRows' :
			FCKTableHandler.DeleteRows();
			break;
		case 'TableInsertColumn' :
			FCKTableHandler.InsertColumn();
			break;
		case 'TableDeleteColumns' :
			FCKTableHandler.DeleteColumns();
			break;
		case 'TableInsertCell' :
			FCKTableHandler.InsertCell();
			break;
		case 'TableDeleteCells' :
			FCKTableHandler.DeleteCells();
			break;
		case 'TableMergeCells' :
			FCKTableHandler.MergeCells();
			break;
		case 'TableSplitCell' :
			FCKTableHandler.SplitCell();
			break;
		case 'TableDelete' :
			FCKTableHandler.DeleteTable();
			break;
		default :
			alert(FCKLang.UnknownCommand.replace(/%1/g, this.Name));
	}
};
FCKTableCommand.prototype.GetState = function() {
	return FCK_TRISTATE_OFF;
}
var FCKStyleCommand = function() {
	this.Name = 'Style';
	this.StylesLoader = new FCKStylesLoader();
	this.StylesLoader.Load(FCKConfig.StylesXmlPath);
	this.Styles = this.StylesLoader.Styles;
};
FCKStyleCommand.prototype.Execute = function(A, B) {
	FCKUndo.SaveUndoStep();
	if (B.Selected)
		B.Style.RemoveFromSelection();
	else
		B.Style.ApplyToSelection();
	FCKUndo.SaveUndoStep();
	FCK.Focus();
	FCK.Events.FireEvent("OnSelectionChange");
};
FCKStyleCommand.prototype.GetState = function() {
	if (!FCK.EditorDocument)
		return FCK_TRISTATE_DISABLED;
	var A = FCK.EditorDocument.selection;
	if (FCKSelection.GetType() == 'Control') {
		var e = FCKSelection.GetSelectedElement();
		if (e)
			return this.StylesLoader.StyleGroups[e.tagName]
					? FCK_TRISTATE_OFF
					: FCK_TRISTATE_DISABLED;
	};
	return FCK_TRISTATE_OFF;
};
FCKStyleCommand.prototype.GetActiveStyles = function() {
	var A = new Array();
	if (FCKSelection.GetType() == 'Control')
		this._CheckStyle(FCKSelection.GetSelectedElement(), A, false);
	else
		this._CheckStyle(FCKSelection.GetParentElement(), A, true);
	return A;
};
FCKStyleCommand.prototype._CheckStyle = function(A, B, C) {
	if (!A)
		return;
	if (A.nodeType == 1) {
		var D = this.StylesLoader.StyleGroups[A.tagName];
		if (D) {
			for (var i = 0; i < D.length; i++) {
				if (D[i].IsEqual(A))
					B[B.length] = D[i];
			}
		}
	};
	if (C)
		this._CheckStyle(A.parentNode, B, C);
}
var FCKFitWindow = function() {
	this.Name = 'FitWindow';
};
FCKFitWindow.prototype.Execute = function() {
	var A = window.frameElement;
	var B = A.style;
	var C = parent;
	var D = C.document.documentElement;
	var E = C.document.body;
	var F = E.style;
	if (!this.IsMaximized) {
		if (FCKBrowserInfo.IsIE)
			C.attachEvent('onresize', FCKFitWindow_Resize);
		else
			C.addEventListener('resize', FCKFitWindow_Resize, true);
		this._ScrollPos = FCKTools.GetScrollPosition(C);
		var G = A;
		while (G = G.parentNode) {
			if (G.nodeType == 1)
				G._fckSavedStyles = FCKTools.SaveStyles(G);
		};
		if (FCKBrowserInfo.IsIE) {
			this.documentElementOverflow = D.style.overflow;
			D.style.overflow = 'hidden';
			F.overflow = 'hidden';
		} else {
			F.overflow = 'hidden';
			F.width = '0px';
			F.height = '0px';
		};
		this._EditorFrameStyles = FCKTools.SaveStyles(A);
		var H = FCKTools.GetViewPaneSize(C);
		B.position = "absolute";
		B.zIndex = FCKConfig.FloatingPanelsZIndex - 1;
		B.left = "0px";
		B.top = "0px";
		B.width = H.Width + "px";
		B.height = H.Height + "px";
		if (!FCKBrowserInfo.IsIE) {
			B.borderRight = B.borderBottom = "9999px solid white";
			B.backgroundColor = "white";
		};
		C.scrollTo(0, 0);
		this.IsMaximized = true;
	} else {
		if (FCKBrowserInfo.IsIE)
			C.detachEvent("onresize", FCKFitWindow_Resize);
		else
			C.removeEventListener("resize", FCKFitWindow_Resize, true);
		var G = A;
		while (G = G.parentNode) {
			if (G._fckSavedStyles) {
				FCKTools.RestoreStyles(G, G._fckSavedStyles);
				G._fckSavedStyles = null;
			}
		};
		if (FCKBrowserInfo.IsIE)
			D.style.overflow = this.documentElementOverflow;
		FCKTools.RestoreStyles(A, this._EditorFrameStyles);
		C.scrollTo(this._ScrollPos.X, this._ScrollPos.Y);
		this.IsMaximized = false;
	};
	FCKToolbarItems.GetItem('FitWindow').RefreshState();
	FCK.EditingArea.MakeEditable();
	FCK.Focus();
};
FCKFitWindow.prototype.GetState = function() {
	if (FCKConfig.ToolbarLocation != 'In')
		return FCK_TRISTATE_DISABLED;
	else
		return (this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF);
};
function FCKFitWindow_Resize() {
	var oViewPaneSize = FCKTools.GetViewPaneSize(parent);
	var eEditorFrameStyle = window.frameElement.style;
	eEditorFrameStyle.width = oViewPaneSize.Width + 'px';
	eEditorFrameStyle.height = oViewPaneSize.Height + 'px';
};
var FCKCommands = FCK.Commands = new Object();
FCKCommands.LoadedCommands = new Object();
FCKCommands.RegisterCommand = function(A, B) {
	this.LoadedCommands[A] = B;
};
FCKCommands.GetCommand = function(A) {
	var B = FCKCommands.LoadedCommands[A];
	if (B)
		return B;
	switch (A) {
		case 'DocProps' :
			B = new FCKDialogCommand('DocProps', FCKLang.DocProps,
					'dialog/fck_docprops.html', 400, 390,
					FCKCommands.GetFullPageState);
			break;
		case 'Templates' :
			B = new FCKDialogCommand('Templates', FCKLang.DlgTemplatesTitle,
					'dialog/fck_template.html', 380, 450);
			break;
		case 'Link' :
			B = new FCKDialogCommand('Link', FCKLang.DlgLnkWindowTitle,
					'dialog/fck_link.html', 400, 330, FCK.GetNamedCommandState,
					'CreateLink');
			break;
		case 'Unlink' :
			B = new FCKUnlinkCommand();
			break;
		case 'Anchor' :
			B = new FCKDialogCommand('Anchor', FCKLang.DlgAnchorTitle,
					'dialog/fck_anchor.html', 370, 170);
			break;
		case 'BulletedList' :
			B = new FCKDialogCommand('BulletedList', FCKLang.BulletedListProp,
					'dialog/fck_listprop.html', 370, 170);
			break;
		case 'NumberedList' :
			B = new FCKDialogCommand('NumberedList', FCKLang.NumberedListProp,
					'dialog/fck_listprop.html', 370, 170);
			break;
		case 'About' :
			B = new FCKDialogCommand('About', FCKLang.About,
					'dialog/fck_about.html', 400, 330);
			break;
		case 'Find' :
			B = new FCKDialogCommand('Find', FCKLang.DlgFindTitle,
					'dialog/fck_find.html', 340, 170);
			break;
		case 'Replace' :
			B = new FCKDialogCommand('Replace', FCKLang.DlgReplaceTitle,
					'dialog/fck_replace.html', 340, 200);
			break;
		case 'Image' :
			B = new FCKDialogCommand('Image', FCKLang.DlgImgTitle,
					'dialog/fck_image.html', 450, 400);
			break;
		case 'Flash' :
			B = new FCKDialogCommand('Flash', FCKLang.DlgFlashTitle,
					'dialog/fck_flash.html', 450, 400);
			break;
		case 'SpecialChar' :
			B = new FCKDialogCommand('SpecialChar',
					FCKLang.DlgSpecialCharTitle, 'dialog/fck_specialchar.html',
					400, 320);
			break;
		case 'Smiley' :
			B = new FCKDialogCommand('Smiley', FCKLang.DlgSmileyTitle,
					'dialog/fck_smiley.html', FCKConfig.SmileyWindowWidth,
					FCKConfig.SmileyWindowHeight);
			break;
		case 'Table' :
			B = new FCKDialogCommand('Table', FCKLang.DlgTableTitle,
					'dialog/fck_table.html', 450, 250);
			break;
		case 'TableProp' :
			B = new FCKDialogCommand('Table', FCKLang.DlgTableTitle,
					'dialog/fck_table.html?Parent', 400, 250);
			break;
		case 'TableCellProp' :
			B = new FCKDialogCommand('TableCell', FCKLang.DlgCellTitle,
					'dialog/fck_tablecell.html', 550, 250);
			break;
		case 'UniversalKey' :
			B = new FCKDialogCommand('UniversalKey', FCKLang.UniversalKeyboard,
					'dialog/fck_universalkey.html', 415, 300);
			break;
		case 'Style' :
			B = new FCKStyleCommand();
			break;
		case 'FontName' :
			B = new FCKFontNameCommand();
			break;
		case 'FontSize' :
			B = new FCKFontSizeCommand();
			break;
		case 'FontFormat' :
			B = new FCKFormatBlockCommand();
			break;
		case 'Source' :
			B = new FCKSourceCommand();
			break;
		case 'Preview' :
			B = new FCKPreviewCommand();
			break;
		case 'Save' :
			B = new FCKSaveCommand();
			break;
		case 'NewPage' :
			B = new FCKNewPageCommand();
			break;
		case 'PageBreak' :
			B = new FCKPageBreakCommand();
			break;
		case 'TextColor' :
			B = new FCKTextColorCommand('ForeColor');
			break;
		case 'BGColor' :
			B = new FCKTextColorCommand('BackColor');
			break;
		case 'PasteText' :
			B = new FCKPastePlainTextCommand();
			break;
		case 'PasteWord' :
			B = new FCKPasteWordCommand();
			break;
		case 'TableInsertRow' :
			B = new FCKTableCommand('TableInsertRow');
			break;
		case 'TableDeleteRows' :
			B = new FCKTableCommand('TableDeleteRows');
			break;
		case 'TableInsertColumn' :
			B = new FCKTableCommand('TableInsertColumn');
			break;
		case 'TableDeleteColumns' :
			B = new FCKTableCommand('TableDeleteColumns');
			break;
		case 'TableInsertCell' :
			B = new FCKTableCommand('TableInsertCell');
			break;
		case 'TableDeleteCells' :
			B = new FCKTableCommand('TableDeleteCells');
			break;
		case 'TableMergeCells' :
			B = new FCKTableCommand('TableMergeCells');
			break;
		case 'TableSplitCell' :
			B = new FCKTableCommand('TableSplitCell');
			break;
		case 'TableDelete' :
			B = new FCKTableCommand('TableDelete');
			break;
		case 'Form' :
			B = new FCKDialogCommand('Form', FCKLang.Form,
					'dialog/fck_form.html', 380, 230);
			break;
		case 'Checkbox' :
			B = new FCKDialogCommand('Checkbox', FCKLang.Checkbox,
					'dialog/fck_checkbox.html', 380, 230);
			break;
		case 'Radio' :
			B = new FCKDialogCommand('Radio', FCKLang.RadioButton,
					'dialog/fck_radiobutton.html', 380, 230);
			break;
		case 'TextField' :
			B = new FCKDialogCommand('TextField', FCKLang.TextField,
					'dialog/fck_textfield.html', 380, 250);
			break;
		case 'Textarea' :
			B = new FCKDialogCommand('Textarea', FCKLang.Textarea,
					'dialog/fck_textarea.html', 380, 230);
			break;
		case 'HiddenField' :
			B = new FCKDialogCommand('HiddenField', FCKLang.HiddenField,
					'dialog/fck_hiddenfield.html', 380, 230);
			break;
		case 'Button' :
			B = new FCKDialogCommand('Button', FCKLang.Button,
					'dialog/fck_button.html', 380, 230);
			break;
		case 'Select' :
			B = new FCKDialogCommand('Select', FCKLang.SelectionField,
					'dialog/fck_select.html', 400, 380);
			break;
		case 'ImageButton' :
			B = new FCKDialogCommand('ImageButton', FCKLang.ImageButton,
					'dialog/fck_image.html?ImageButton', 450, 400);
			break;
		case 'SpellCheck' :
			B = new FCKSpellCheckCommand();
			break;
		case 'FitWindow' :
			B = new FCKFitWindow();
			break;
		case 'Undo' :
			B = new FCKUndoCommand();
			break;
		case 'Redo' :
			B = new FCKRedoCommand();
			break;
		case 'Undefined' :
			B = new FCKUndefinedCommand();
			break;
		default :
			if (FCKRegexLib.NamedCommands.test(A))
				B = new FCKNamedCommand(A);
			else {
				alert(FCKLang.UnknownCommand.replace(/%1/g, A));
				return null;
			}
	};
	FCKCommands.LoadedCommands[A] = B;
	return B;
};
FCKCommands.GetFullPageState = function() {
	return FCKConfig.FullPage ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED;
};
var FCKPanel = function(A) {
	this.IsRTL = (FCKLang.Dir == 'rtl');
	this.IsContextMenu = false;
	this._LockCounter = 0;
	this._Window = A || window;
	var B;
	if (FCKBrowserInfo.IsIE) {
		this._Popup = this._Window.createPopup();
		B = this.Document = this._Popup.document;
	} else {
		var C = this._IFrame = this._Window.document.createElement('iframe');
		C.src = 'javascript:void(0)';
		C.allowTransparency = true;
		C.frameBorder = '0';
		C.scrolling = 'no';
		C.style.position = 'absolute';
		C.style.zIndex = FCKConfig.FloatingPanelsZIndex;
		C.width = C.height = 0;
		if (this._Window == window.parent && window.frameElement)
			window.frameElement.parentNode.insertBefore(C, window.frameElement);
		else
			this._Window.document.body.appendChild(C);
		var D = C.contentWindow;
		B = this.Document = D.document;
		B.open();
		B
				.write('<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>');
		B.close();
		FCKTools.AddEventListenerEx(D, 'focus', FCKPanel_Window_OnFocus, this);
		FCKTools.AddEventListenerEx(D, 'blur', FCKPanel_Window_OnBlur, this);
	};
	B.dir = FCKLang.Dir;
	B.oncontextmenu = FCKTools.CancelEvent;
	this.MainNode = B.body.appendChild(B.createElement('DIV'));
	this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left';
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKPanel_Cleanup);
};
FCKPanel.prototype.AppendStyleSheet = function(A) {
	FCKTools.AppendStyleSheet(this.Document, A);
};
FCKPanel.prototype.Preload = function(x, y, A) {
	if (this._Popup)
		this._Popup.show(x, y, 0, 0, A);
};
FCKPanel.prototype.Show = function(x, y, A, B, C) {
	if (this._Popup) {
		this._Popup.show(x, y, 0, 0, A);
		this.MainNode.style.width = B ? B + 'px' : '';
		this.MainNode.style.height = C ? C + 'px' : '';
		var D = this.MainNode.offsetWidth;
		if (this.IsRTL) {
			if (this.IsContextMenu)
				x = x - D + 1;
			else if (A)
				x = (x * -1) + A.offsetWidth - D;
		};
		this._Popup.show(x, y, D, this.MainNode.offsetHeight, A);
		if (this.OnHide) {
			if (this._Timer)
				CheckPopupOnHide.call(this, true);
			this._Timer = FCKTools.SetInterval(CheckPopupOnHide, 100, this);
		}
	} else {
		if (typeof(FCKFocusManager) != 'undefined')
			FCKFocusManager.Lock();
		if (this.ParentPanel)
			this.ParentPanel.Lock();
		this.MainNode.style.width = B ? B + 'px' : '';
		this.MainNode.style.height = C ? C + 'px' : '';
		var D = this.MainNode.offsetWidth;
		if (!B)
			this._IFrame.width = 1;
		if (!C)
			this._IFrame.height = 1;
		D = this.MainNode.offsetWidth;
		var F = FCKTools.GetElementPosition((A.nodeType == 9 ? A.body : A),
				this._Window);
		if (this.IsRTL && !this.IsContextMenu)
			x = (x * -1);
		x += F.X;
		y += F.Y;
		if (this.IsRTL) {
			if (this.IsContextMenu)
				x = x - D + 1;
			else if (A)
				x = x + A.offsetWidth - D;
		} else {
			var G = FCKTools.GetViewPaneSize(this._Window);
			var H = FCKTools.GetScrollPosition(this._Window);
			var I = G.Height + H.Y;
			var J = G.Width + H.X;
			if ((x + D) > J)
				x -= x + D - J;
			if ((y + this.MainNode.offsetHeight) > I)
				y -= y + this.MainNode.offsetHeight - I;
		};
		if (x < 0)
			x = 0;
		this._IFrame.style.left = x + 'px';
		this._IFrame.style.top = y + 'px';
		var K = D;
		var L = this.MainNode.offsetHeight;
		this._IFrame.width = K;
		this._IFrame.height = L;
		this._IFrame.contentWindow.focus();
	};
	this._IsOpened = true;
	FCKTools.RunFunction(this.OnShow, this);
};
FCKPanel.prototype.Hide = function(A) {
	if (this._Popup)
		this._Popup.hide();
	else {
		if (!this._IsOpened)
			return;
		if (typeof(FCKFocusManager) != 'undefined')
			FCKFocusManager.Unlock();
		this._IFrame.width = this._IFrame.height = 0;
		this._IsOpened = false;
		if (this.ParentPanel)
			this.ParentPanel.Unlock();
		if (!A)
			FCKTools.RunFunction(this.OnHide, this);
	}
};
FCKPanel.prototype.CheckIsOpened = function() {
	if (this._Popup)
		return this._Popup.isOpen;
	else
		return this._IsOpened;
};
FCKPanel.prototype.CreateChildPanel = function() {
	var A = this._Popup
			? FCKTools.GetParentWindow(this.Document)
			: this._Window;
	var B = new FCKPanel(A, true);
	B.ParentPanel = this;
	return B;
};
FCKPanel.prototype.Lock = function() {
	this._LockCounter++;
};
FCKPanel.prototype.Unlock = function() {
	if (--this._LockCounter == 0 && !this.HasFocus)
		this.Hide();
};/* Events */
function FCKPanel_Window_OnFocus(e, panel) {
	panel.HasFocus = true;
};
function FCKPanel_Window_OnBlur(e, panel) {
	panel.HasFocus = false;
	if (panel._LockCounter == 0)
		FCKTools.RunFunction(panel.Hide, panel);
};
function CheckPopupOnHide(forceHide) {
	if (forceHide || !this._Popup.isOpen) {
		window.clearInterval(this._Timer);
		this._Timer = null;
		FCKTools.RunFunction(this.OnHide, this);
	}
};
function FCKPanel_Cleanup() {
	this._Popup = null;
	this._Window = null;
	this.Document = null;
	this.MainNode = null;
}
var FCKIcon = function(A) {
	var B = A ? typeof(A) : 'undefined';
	switch (B) {
		case 'number' :
			this.Path = FCKConfig.SkinPath + 'fck_strip.gif';
			this.Size = 16;
			this.Position = A;
			break;
		case 'undefined' :
			this.Path = FCK_SPACER_PATH;
			break;
		case 'string' :
			this.Path = A;
			break;
		default :
			this.Path = A[0];
			this.Size = A[1];
			this.Position = A[2];
	}
};
FCKIcon.prototype.CreateIconElement = function(A) {
	var B;
	if (this.Position) {
		var C = '-' + ((this.Position - 1) * this.Size) + 'px';
		if (FCKBrowserInfo.IsIE) {
			B = A.createElement('DIV');
			var D = B.appendChild(A.createElement('IMG'));
			D.src = this.Path;
			D.style.top = C;
		} else {
			B = A.createElement('IMG');
			B.src = FCK_SPACER_PATH;
			B.style.backgroundPosition = '0px ' + C;
			B.style.backgroundImage = 'url(' + this.Path + ')';
		}
	} else {
		B = A.createElement('DIV');
		var D = B.appendChild(A.createElement('IMG'));
		D.src = this.Path ? this.Path : FCK_SPACER_PATH;
	};
	B.className = 'TB_Button_Image';
	return B;
}
var FCKToolbarButtonUI = function(A, B, C, D, E, F) {
	this.Name = A;
	this.Label = B || A;
	this.Tooltip = C || this.Label;
	this.Style = E || FCK_TOOLBARITEM_ONLYICON;
	this.State = F || FCK_TRISTATE_OFF;
	this.Icon = new FCKIcon(D);
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKToolbarButtonUI_Cleanup);
};
FCKToolbarButtonUI.prototype._CreatePaddingElement = function(A) {
	var B = A.createElement('IMG');
	B.className = 'TB_Button_Padding';
	B.src = FCK_SPACER_PATH;
	return B;
};
FCKToolbarButtonUI.prototype.Create = function(A) {
	var B = this.MainElement;
	if (B) {
		FCKToolbarButtonUI_Cleanup.call(this);
		if (B.parentNode)
			B.parentNode.removeChild(B);
		B = this.MainElement = null;
	};
	var C = FCKTools.GetElementDocument(A);
	B = this.MainElement = C.createElement('DIV');
	B._FCKButton = this;
	B.title = this.Tooltip;
	if (FCKBrowserInfo.IsGecko)
		B.onmousedown = FCKTools.CancelEvent;
	this.ChangeState(this.State, true);
	if (this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow) {
		B.appendChild(this.Icon.CreateIconElement(C));
	} else {
		var D = B.appendChild(C.createElement('TABLE'));
		D.cellPadding = 0;
		D.cellSpacing = 0;
		var E = D.insertRow(-1);
		var F = E.insertCell(-1);
		if (this.Style == FCK_TOOLBARITEM_ONLYICON
				|| this.Style == FCK_TOOLBARITEM_ICONTEXT)
			F.appendChild(this.Icon.CreateIconElement(C));
		else
			F.appendChild(this._CreatePaddingElement(C));
		if (this.Style == FCK_TOOLBARITEM_ONLYTEXT
				|| this.Style == FCK_TOOLBARITEM_ICONTEXT) {
			F = E.insertCell(-1);
			F.className = 'TB_Button_Text';
			F.noWrap = true;
			F.appendChild(C.createTextNode(this.Label));
		};
		if (this.ShowArrow) {
			if (this.Style != FCK_TOOLBARITEM_ONLYICON) {
				E.insertCell(-1).appendChild(this._CreatePaddingElement(C));
			};
			F = E.insertCell(-1);
			var G = F.appendChild(C.createElement('IMG'));
			G.src = FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif';
			G.width = 5;
			G.height = 3;
		};
		F = E.insertCell(-1);
		F.appendChild(this._CreatePaddingElement(C));
	};
	A.appendChild(B);
};
FCKToolbarButtonUI.prototype.ChangeState = function(A, B) {
	if (!B && this.State == A)
		return;
	var e = this.MainElement;
	switch (parseInt(A)) {
		case FCK_TRISTATE_OFF :
			e.className = 'TB_Button_Off';
			e.onmouseover = FCKToolbarButton_OnMouseOverOff;
			e.onmouseout = FCKToolbarButton_OnMouseOutOff;
			e.onclick = FCKToolbarButton_OnClick;
			break;
		case FCK_TRISTATE_ON :
			e.className = 'TB_Button_On';
			e.onmouseover = FCKToolbarButton_OnMouseOverOn;
			e.onmouseout = FCKToolbarButton_OnMouseOutOn;
			e.onclick = FCKToolbarButton_OnClick;
			break;
		case FCK_TRISTATE_DISABLED :
			e.className = 'TB_Button_Disabled';
			e.onmouseover = null;
			e.onmouseout = null;
			e.onclick = null;
			bEnableEvents = false;
			break;
	};
	this.State = A;
};
function FCKToolbarButtonUI_Cleanup() {
	if (this.MainElement) {
		this.MainElement._FCKButton = null;
		this.MainElement = null;
	}
};
function FCKToolbarButton_OnMouseOverOn() {
	this.className = 'TB_Button_On_Over';
};
function FCKToolbarButton_OnMouseOutOn() {
	this.className = 'TB_Button_On';
};
function FCKToolbarButton_OnMouseOverOff() {
	this.className = 'TB_Button_Off_Over';
};
function FCKToolbarButton_OnMouseOutOff() {
	this.className = 'TB_Button_Off';
};
function FCKToolbarButton_OnClick(e) {
	if (this._FCKButton.OnClick)
		this._FCKButton.OnClick(this._FCKButton);
};
var FCKToolbarButton = function(A, B, C, D, E, F, G) {
	this.CommandName = A;
	this.Label = B;
	this.Tooltip = C;
	this.Style = D;
	this.SourceView = E ? true : false;
	this.ContextSensitive = F ? true : false;
	if (G == null)
		this.IconPath = FCKConfig.SkinPath + 'toolbar/' + A.toLowerCase()
				+ '.gif';
	else if (typeof(G) == 'number')
		this.IconPath = [FCKConfig.SkinPath + 'fck_strip.gif', 16, G];
};
FCKToolbarButton.prototype.Create = function(A) {
	this._UIButton = new FCKToolbarButtonUI(this.CommandName, this.Label,
			this.Tooltip, this.IconPath, this.Style);
	this._UIButton.OnClick = this.Click;
	this._UIButton._ToolbarButton = this;
	this._UIButton.Create(A);
};
FCKToolbarButton.prototype.RefreshState = function() {
	var A = FCK.ToolbarSet.CurrentInstance.Commands
			.GetCommand(this.CommandName).GetState();
	if (A == this._UIButton.State)
		return;
	this._UIButton.ChangeState(A);
};
FCKToolbarButton.prototype.Click = function() {
	var A = this._ToolbarButton || this;
	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();
};
FCKToolbarButton.prototype.Enable = function() {
	this.RefreshState();
};
FCKToolbarButton.prototype.Disable = function() {
	this._UIButton.ChangeState(FCK_TRISTATE_DISABLED);
}
var FCKSpecialCombo = function(A, B, C, D, E) {
	this.FieldWidth = B || 100;
	this.PanelWidth = C || 150;
	this.PanelMaxHeight = D || 150;
	this.Label = '&nbsp;';
	this.Caption = A;
	this.Tooltip = A;
	this.Style = FCK_TOOLBARITEM_ICONTEXT;
	this.Enabled = true;
	this.Items = new Object();
	this._Panel = new FCKPanel(E || window, true);
	this._Panel.AppendStyleSheet(FCKConfig.SkinPath + 'fck_editor.css');
	this._PanelBox = this._Panel.MainNode.appendChild(this._Panel.Document
			.createElement('DIV'));
	this._PanelBox.className = 'SC_Panel';
	this._PanelBox.style.width = this.PanelWidth + 'px';
	this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';
	this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0];
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKSpecialCombo_Cleanup);
};
function FCKSpecialCombo_ItemOnMouseOver() {
	this.className += ' SC_ItemOver';
};
function FCKSpecialCombo_ItemOnMouseOut() {
	this.className = this.originalClass;
};
function FCKSpecialCombo_ItemOnClick() {
	this.className = this.originalClass;
	this.FCKSpecialCombo._Panel.Hide();
	this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);
	if (typeof(this.FCKSpecialCombo.OnSelect) == 'function')
		this.FCKSpecialCombo.OnSelect(this.FCKItemID, this);
};
FCKSpecialCombo.prototype.AddItem = function(A, B, C, D) {
	var E = this._ItemsHolderEl.appendChild(this._Panel.Document
			.createElement('DIV'));
	E.className = E.originalClass = 'SC_Item';
	E.innerHTML = B;
	E.FCKItemID = A;
	E.FCKItemLabel = C || A;
	E.FCKSpecialCombo = this;
	E.Selected = false;
	if (FCKBrowserInfo.IsIE)
		E.style.width = '100%';
	if (D)
		E.style.backgroundColor = D;
	E.onmouseover = FCKSpecialCombo_ItemOnMouseOver;
	E.onmouseout = FCKSpecialCombo_ItemOnMouseOut;
	E.onclick = FCKSpecialCombo_ItemOnClick;
	this.Items[A.toString().toLowerCase()] = E;
	return E;
};
FCKSpecialCombo.prototype.SelectItem = function(A) {
	A = A ? A.toString().toLowerCase() : '';
	var B = this.Items[A];
	if (B) {
		B.className = B.originalClass = 'SC_ItemSelected';
		B.Selected = true;
	}
};
FCKSpecialCombo.prototype.SelectItemByLabel = function(A, B) {
	for (var C in this.Items) {
		var D = this.Items[C];
		if (D.FCKItemLabel == A) {
			D.className = D.originalClass = 'SC_ItemSelected';
			D.Selected = true;
			if (B)
				this.SetLabel(A);
		}
	}
};
FCKSpecialCombo.prototype.DeselectAll = function(A) {
	for (var i in this.Items) {
		this.Items[i].className = this.Items[i].originalClass = 'SC_Item';
		this.Items[i].Selected = false;
	};
	if (A)
		this.SetLabel('');
};
FCKSpecialCombo.prototype.SetLabelById = function(A) {
	A = A ? A.toString().toLowerCase() : '';
	var B = this.Items[A];
	this.SetLabel(B ? B.FCKItemLabel : '');
};
FCKSpecialCombo.prototype.SetLabel = function(A) {
	this.Label = A.length == 0 ? '&nbsp;' : A;
	if (this._LabelEl)
		this._LabelEl.innerHTML = this.Label;
};
FCKSpecialCombo.prototype.SetEnabled = function(A) {
	this.Enabled = A;
	this._OuterTable.className = A ? '' : 'SC_FieldDisabled';
};
FCKSpecialCombo.prototype.Create = function(A) {
	var B = FCKTools.GetElementDocument(A);
	var C = this._OuterTable = A.appendChild(B.createElement('TABLE'));
	C.cellPadding = 0;
	C.cellSpacing = 0;
	C.insertRow(-1);
	var D;
	var E;
	switch (this.Style) {
		case FCK_TOOLBARITEM_ONLYICON :
			D = 'TB_ButtonType_Icon';
			E = false;
			break;
		case FCK_TOOLBARITEM_ONLYTEXT :
			D = 'TB_ButtonType_Text';
			E = false;
			break;
		case FCK_TOOLBARITEM_ICONTEXT :
			E = true;
			break;
	};
	if (this.Caption && this.Caption.length > 0 && E) {
		var F = C.rows[0].insertCell(-1);
		F.innerHTML = this.Caption;
		F.className = 'SC_FieldCaption';
	};
	var G = FCKTools.AppendElement(C.rows[0].insertCell(-1), 'div');
	if (E) {
		G.className = 'SC_Field';
		G.style.width = this.FieldWidth + 'px';
		G.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';
		this._LabelEl = G.getElementsByTagName('label')[0];
		this._LabelEl.innerHTML = this.Label;
	} else {
		G.className = 'TB_Button_Off';
		G.innerHTML = '<table title="' + this.Tooltip + '" class="' + D
				+ '" cellspacing="0" cellpadding="0" border="0">' + '<tr>'
				+ '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH
				+ '" /></td>' + '<td class="TB_Text">' + this.Caption + '</td>'
				+ '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH
				+ '" /></td>' + '<td class="TB_ButtonArrow"><img src="'
				+ FCKConfig.SkinPath
				+ 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'
				+ '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH
				+ '" /></td>' + '</tr>' + '</table>';
	};
	G.SpecialCombo = this;
	G.onmouseover = FCKSpecialCombo_OnMouseOver;
	G.onmouseout = FCKSpecialCombo_OnMouseOut;
	G.onclick = FCKSpecialCombo_OnClick;
	FCKTools.DisableSelection(this._Panel.Document.body);
};
function FCKSpecialCombo_Cleanup() {
	this._LabelEl = null;
	this._OuterTable = null;
	this._ItemsHolderEl = null;
	this._PanelBox = null;
	if (this.Items) {
		for (var key in this.Items)
			this.Items[key] = null;
	}
};
function FCKSpecialCombo_OnMouseOver() {
	if (this.SpecialCombo.Enabled) {
		switch (this.SpecialCombo.Style) {
			case FCK_TOOLBARITEM_ONLYICON :
				this.className = 'TB_Button_On_Over';
				break;
			case FCK_TOOLBARITEM_ONLYTEXT :
				this.className = 'TB_Button_On_Over';
				break;
			case FCK_TOOLBARITEM_ICONTEXT :
				this.className = 'SC_Field SC_FieldOver';
				break;
		}
	}
};
function FCKSpecialCombo_OnMouseOut() {
	switch (this.SpecialCombo.Style) {
		case FCK_TOOLBARITEM_ONLYICON :
			this.className = 'TB_Button_Off';
			break;
		case FCK_TOOLBARITEM_ONLYTEXT :
			this.className = 'TB_Button_Off';
			break;
		case FCK_TOOLBARITEM_ICONTEXT :
			this.className = 'SC_Field';
			break;
	}
};
function FCKSpecialCombo_OnClick(e) {
	var oSpecialCombo = this.SpecialCombo;
	if (oSpecialCombo.Enabled) {
		var oPanel = oSpecialCombo._Panel;
		var oPanelBox = oSpecialCombo._PanelBox;
		var oItemsHolder = oSpecialCombo._ItemsHolderEl;
		var iMaxHeight = oSpecialCombo.PanelMaxHeight;
		if (oSpecialCombo.OnBeforeClick)
			oSpecialCombo.OnBeforeClick(oSpecialCombo);
		if (FCKBrowserInfo.IsIE)
			oPanel.Preload(0, this.offsetHeight, this);
		if (oItemsHolder.offsetHeight > iMaxHeight)
			oPanelBox.style.height = iMaxHeight + 'px';
		else
			oPanelBox.style.height = '';
		oPanel.Show(0, this.offsetHeight, this);
	}
};
var FCKToolbarSpecialCombo = function() {
	this.SourceView = false;
	this.ContextSensitive = true;
};
function FCKToolbarSpecialCombo_OnSelect(itemId, item) {
	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)
			.Execute(itemId, item);
};
FCKToolbarSpecialCombo.prototype.Create = function(A) {
	this._Combo = new FCKSpecialCombo(this.GetLabel(), this.FieldWidth,
			this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE
					? window
					: FCKTools.GetElementWindow(A).parent);
	this._Combo.Tooltip = this.Tooltip;
	this._Combo.Style = this.Style;
	this.CreateItems(this._Combo);
	this._Combo.Create(A);
	this._Combo.CommandName = this.CommandName;
	this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect;
};
function FCKToolbarSpecialCombo_RefreshActiveItems(combo, value) {
	combo.DeselectAll();
	combo.SelectItem(value);
	combo.SetLabelById(value);
};
FCKToolbarSpecialCombo.prototype.RefreshState = function() {
	var A;
	var B = FCK.ToolbarSet.CurrentInstance.Commands
			.GetCommand(this.CommandName).GetState();
	if (B != FCK_TRISTATE_DISABLED) {
		A = FCK_TRISTATE_ON;
		if (this.RefreshActiveItems)
			this.RefreshActiveItems(this._Combo, B);
		else {
			if (this._LastValue != B) {
				this._LastValue = B;
				FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo, B);
			}
		}
	} else
		A = FCK_TRISTATE_DISABLED;
	if (A == this.State)
		return;
	if (A == FCK_TRISTATE_DISABLED) {
		this._Combo.DeselectAll();
		this._Combo.SetLabel('');
	};
	this.State = A;
	this._Combo.SetEnabled(A != FCK_TRISTATE_DISABLED);
};
FCKToolbarSpecialCombo.prototype.Enable = function() {
	this.RefreshState();
};
FCKToolbarSpecialCombo.prototype.Disable = function() {
	this.State = FCK_TRISTATE_DISABLED;
	this._Combo.DeselectAll();
	this._Combo.SetLabel('');
	this._Combo.SetEnabled(false);
}
var FCKToolbarFontsCombo = function(A, B) {
	this.CommandName = 'FontName';
	this.Label = this.GetLabel();
	this.Tooltip = A ? A : this.Label;
	this.Style = B ? B : FCK_TOOLBARITEM_ICONTEXT;
};
FCKToolbarFontsCombo.prototype = new FCKToolbarSpecialCombo;
FCKToolbarFontsCombo.prototype.GetLabel = function() {
	return FCKLang.Font;
};
FCKToolbarFontsCombo.prototype.CreateItems = function(A) {
	var B = FCKConfig.FontNames.split(';');
	for (var i = 0; i < B.length; i++)
		this._Combo.AddItem(B[i], '<font face="' + B[i]
						+ '" style="font-size: 12px">' + B[i] + '</font>');
}
var FCKToolbarFontSizeCombo = function(A, B) {
	this.CommandName = 'FontSize';
	this.Label = this.GetLabel();
	this.Tooltip = A ? A : this.Label;
	this.Style = B ? B : FCK_TOOLBARITEM_ICONTEXT;
};
FCKToolbarFontSizeCombo.prototype = new FCKToolbarSpecialCombo;
FCKToolbarFontSizeCombo.prototype.GetLabel = function() {
	return FCKLang.FontSize;
};
FCKToolbarFontSizeCombo.prototype.CreateItems = function(A) {
	A.FieldWidth = 70;
	var B = FCKConfig.FontSizes.split(';');
	for (var i = 0; i < B.length; i++) {
		var C = B[i].split('/');
		this._Combo.AddItem(C[0], '<font size="' + C[0] + '">' + C[1]
						+ '</font>', C[1]);
	}
}
var FCKToolbarFontFormatCombo = function(A, B) {
	this.CommandName = 'FontFormat';
	this.Label = this.GetLabel();
	this.Tooltip = A ? A : this.Label;
	this.Style = B ? B : FCK_TOOLBARITEM_ICONTEXT;
	this.NormalLabel = 'Normal';
	this.PanelWidth = 190;
};
FCKToolbarFontFormatCombo.prototype = new FCKToolbarSpecialCombo;
FCKToolbarFontFormatCombo.prototype.GetLabel = function() {
	return FCKLang.FontFormat;
};
FCKToolbarFontFormatCombo.prototype.CreateItems = function(A) {
	FCKTools.AppendStyleSheet(A._Panel.Document,
			FCKConfig.ToolbarComboPreviewCSS);
	var B = FCKLang['FontFormats'].split(';');
	var C = {
		p : B[0],
		pre : B[1],
		address : B[2],
		h1 : B[3],
		h2 : B[4],
		h3 : B[5],
		h4 : B[6],
		h5 : B[7],
		h6 : B[8],
		div : B[9]
	};
	var D = FCKConfig.FontFormats.split(';');
	for (var i = 0; i < D.length; i++) {
		var E = D[i];
		var F = C[E];
		if (E == 'p')
			this.NormalLabel = F;
		this._Combo.AddItem(E, '<div class="BaseFont"><' + E + '>' + F + '</'
						+ E + '></div>', F);
	}
};
if (FCKBrowserInfo.IsIE) {
	FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function(A, B) {
		if (B == this.NormalLabel) {
			if (A.Label != '&nbsp;')
				A.DeselectAll(true);
		} else {
			if (this._LastValue == B)
				return;
			A.SelectItemByLabel(B, true);
		};
		this._LastValue = B;
	}
}
var FCKToolbarStyleCombo = function(A, B) {
	this.CommandName = 'Style';
	this.Label = this.GetLabel();
	this.Tooltip = A ? A : this.Label;
	this.Style = B ? B : FCK_TOOLBARITEM_ICONTEXT;
};
FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo;
FCKToolbarStyleCombo.prototype.GetLabel = function() {
	return FCKLang.Style;
};
FCKToolbarStyleCombo.prototype.CreateItems = function(A) {
	var B = A._Panel.Document;
	FCKTools.AppendStyleSheet(B, FCKConfig.ToolbarComboPreviewCSS);
	B.body.className += ' ForceBaseFont';
	if (!FCKBrowserInfo.IsGecko)
		A.OnBeforeClick = this.RefreshVisibleItems;
	var C = FCK.ToolbarSet.CurrentInstance.Commands
			.GetCommand(this.CommandName).Styles;
	for (var s in C) {
		var D = C[s];
		var E;
		if (D.IsObjectElement)
			E = A.AddItem(s, s);
		else
			E = A.AddItem(s, D.GetOpenerTag() + s + D.GetCloserTag());
		E.Style = D;
	}
};
FCKToolbarStyleCombo.prototype.RefreshActiveItems = function(A) {
	A.DeselectAll();
	var B = FCK.ToolbarSet.CurrentInstance.Commands
			.GetCommand(this.CommandName).GetActiveStyles();
	if (B.length > 0) {
		for (var i = 0; i < B.length; i++)
			A.SelectItem(B[i].Name);
		A.SetLabelById(B[0].Name);
	} else
		A.SetLabel('');
};
FCKToolbarStyleCombo.prototype.RefreshVisibleItems = function(A) {
	if (FCKSelection.GetType() == 'Control')
		var B = FCKSelection.GetSelectedElement().tagName;
	for (var i in A.Items) {
		var C = A.Items[i];
		if ((B && C.Style.Element == B) || (!B && !C.Style.IsObjectElement))
			C.style.display = '';
		else
			C.style.display = 'none';
	}
}
var FCKToolbarPanelButton = function(A, B, C, D, E) {
	this.CommandName = A;
	var F;
	if (E == null)
		F = FCKConfig.SkinPath + 'toolbar/' + A.toLowerCase() + '.gif';
	else if (typeof(E) == 'number')
		F = [FCKConfig.SkinPath + 'fck_strip.gif', 16, E];
	var G = this._UIButton = new FCKToolbarButtonUI(A, B, C, F, D);
	G._FCKToolbarPanelButton = this;
	G.ShowArrow = true;
	G.OnClick = FCKToolbarPanelButton_OnButtonClick;
};
FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton';
FCKToolbarPanelButton.prototype.Create = function(A) {
	A.className += 'Menu';
	this._UIButton.Create(A);
	var B = FCK.ToolbarSet.CurrentInstance.Commands
			.GetCommand(this.CommandName)._Panel;
	B._FCKToolbarPanelButton = this;
	var C = B.Document.body.appendChild(B.Document.createElement('div'));
	C.style.position = 'absolute';
	C.style.top = '0px';
	var D = this.LineImg = C.appendChild(B.Document.createElement('IMG'));
	D.className = 'TB_ConnectionLine';
	D.src = FCK_SPACER_PATH;
	B.OnHide = FCKToolbarPanelButton_OnPanelHide;
};
function FCKToolbarPanelButton_OnButtonClick(toolbarButton) {
	var oButton = this._FCKToolbarPanelButton;
	var e = oButton._UIButton.MainElement;
	oButton._UIButton.ChangeState(FCK_TRISTATE_ON);
	oButton.LineImg.style.width = (e.offsetWidth - 2) + 'px';
	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(oButton.CommandName)
			.Execute(0, e.offsetHeight - 1, e);
};
function FCKToolbarPanelButton_OnPanelHide() {
	var oMenuButton = this._FCKToolbarPanelButton;
	oMenuButton._UIButton.ChangeState(FCK_TRISTATE_OFF);
};
FCKToolbarPanelButton.prototype.RefreshState = FCKToolbarButton.prototype.RefreshState;
FCKToolbarPanelButton.prototype.Enable = FCKToolbarButton.prototype.Enable;
FCKToolbarPanelButton.prototype.Disable = FCKToolbarButton.prototype.Disable;
var FCKToolbarItems = new Object();
FCKToolbarItems.LoadedItems = new Object();
FCKToolbarItems.RegisterItem = function(A, B) {
	this.LoadedItems[A] = B;
};
FCKToolbarItems.GetItem = function(A) {
	var B = FCKToolbarItems.LoadedItems[A];
	if (B)
		return B;
	switch (A) {
		case 'Source' :
			B = new FCKToolbarButton('Source', FCKLang.Source, null,
					FCK_TOOLBARITEM_ICONTEXT, true, true, 1);
			break;
		case 'DocProps' :
			B = new FCKToolbarButton('DocProps', FCKLang.DocProps, null, null,
					null, null, 2);
			break;
		case 'Save' :
			B = new FCKToolbarButton('Save', FCKLang.Save, null, null, true,
					null, 3);
			break;
		case 'NewPage' :
			B = new FCKToolbarButton('NewPage', FCKLang.NewPage, null, null,
					true, null, 4);
			break;
		case 'Preview' :
			B = new FCKToolbarButton('Preview', FCKLang.Preview, null, null,
					true, null, 5);
			break;
		case 'Templates' :
			B = new FCKToolbarButton('Templates', FCKLang.Templates, null,
					null, null, null, 6);
			break;
		case 'About' :
			B = new FCKToolbarButton('About', FCKLang.About, null, null, true,
					null, 47);
			break;
		case 'Cut' :
			B = new FCKToolbarButton('Cut', FCKLang.Cut, null, null, false,
					true, 7);
			break;
		case 'Copy' :
			B = new FCKToolbarButton('Copy', FCKLang.Copy, null, null, false,
					true, 8);
			break;
		case 'Paste' :
			B = new FCKToolbarButton('Paste', FCKLang.Paste, null, null, false,
					true, 9);
			break;
		case 'PasteText' :
			B = new FCKToolbarButton('PasteText', FCKLang.PasteText, null,
					null, false, true, 10);
			break;
		case 'PasteWord' :
			B = new FCKToolbarButton('PasteWord', FCKLang.PasteWord, null,
					null, false, true, 11);
			break;
		case 'Print' :
			B = new FCKToolbarButton('Print', FCKLang.Print, null, null, false,
					true, 12);
			break;
		case 'SpellCheck' :
			B = new FCKToolbarButton('SpellCheck', FCKLang.SpellCheck, null,
					null, null, null, 13);
			break;
		case 'Undo' :
			B = new FCKToolbarButton('Undo', FCKLang.Undo, null, null, false,
					true, 14);
			break;
		case 'Redo' :
			B = new FCKToolbarButton('Redo', FCKLang.Redo, null, null, false,
					true, 15);
			break;
		case 'SelectAll' :
			B = new FCKToolbarButton('SelectAll', FCKLang.SelectAll, null,
					null, null, null, 18);
			break;
		case 'RemoveFormat' :
			B = new FCKToolbarButton('RemoveFormat', FCKLang.RemoveFormat,
					null, null, false, true, 19);
			break;
		case 'FitWindow' :
			B = new FCKToolbarButton('FitWindow', FCKLang.FitWindow, null,
					null, true, true, 66);
			break;
		case 'Bold' :
			B = new FCKToolbarButton('Bold', FCKLang.Bold, null, null, false,
					true, 20);
			break;
		case 'Italic' :
			B = new FCKToolbarButton('Italic', FCKLang.Italic, null, null,
					false, true, 21);
			break;
		case 'Underline' :
			B = new FCKToolbarButton('Underline', FCKLang.Underline, null,
					null, false, true, 22);
			break;
		case 'StrikeThrough' :
			B = new FCKToolbarButton('StrikeThrough', FCKLang.StrikeThrough,
					null, null, false, true, 23);
			break;
		case 'Subscript' :
			B = new FCKToolbarButton('Subscript', FCKLang.Subscript, null,
					null, false, true, 24);
			break;
		case 'Superscript' :
			B = new FCKToolbarButton('Superscript', FCKLang.Superscript, null,
					null, false, true, 25);
			break;
		case 'OrderedList' :
			B = new FCKToolbarButton('InsertOrderedList',
					FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false,
					true, 26);
			break;
		case 'UnorderedList' :
			B = new FCKToolbarButton('InsertUnorderedList',
					FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false,
					true, 27);
			break;
		case 'Outdent' :
			B = new FCKToolbarButton('Outdent', FCKLang.DecreaseIndent, null,
					null, false, true, 28);
			break;
		case 'Indent' :
			B = new FCKToolbarButton('Indent', FCKLang.IncreaseIndent, null,
					null, false, true, 29);
			break;
		case 'Link' :
			B = new FCKToolbarButton('Link', FCKLang.InsertLinkLbl,
					FCKLang.InsertLink, null, false, true, 34);
			break;
		case 'Unlink' :
			B = new FCKToolbarButton('Unlink', FCKLang.RemoveLink, null, null,
					false, true, 35);
			break;
		case 'Anchor' :
			B = new FCKToolbarButton('Anchor', FCKLang.Anchor, null, null,
					null, null, 36);
			break;
		case 'Image' :
			B = new FCKToolbarButton('Image', FCKLang.InsertImageLbl,
					FCKLang.InsertImage, null, false, true, 37);
			break;
		case 'Flash' :
			B = new FCKToolbarButton('Flash', FCKLang.InsertFlashLbl,
					FCKLang.InsertFlash, null, false, true, 38);
			break;
		case 'Table' :
			B = new FCKToolbarButton('Table', FCKLang.InsertTableLbl,
					FCKLang.InsertTable, null, false, true, 39);
			break;
		case 'SpecialChar' :
			B = new FCKToolbarButton('SpecialChar',
					FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar,
					null, false, true, 42);
			break;
		case 'Smiley' :
			B = new FCKToolbarButton('Smiley', FCKLang.InsertSmileyLbl,
					FCKLang.InsertSmiley, null, false, true, 41);
			break;
		case 'PageBreak' :
			B = new FCKToolbarButton('PageBreak', FCKLang.PageBreakLbl,
					FCKLang.PageBreak, null, false, true, 43);
			break;
		case 'UniversalKey' :
			B = new FCKToolbarButton('UniversalKey', FCKLang.UniversalKeyboard,
					null, null, false, true, 44);
			break;
		case 'Rule' :
			B = new FCKToolbarButton('InsertHorizontalRule',
					FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false,
					true, 40);
			break;
		case 'JustifyLeft' :
			B = new FCKToolbarButton('JustifyLeft', FCKLang.LeftJustify, null,
					null, false, true, 30);
			break;
		case 'JustifyCenter' :
			B = new FCKToolbarButton('JustifyCenter', FCKLang.CenterJustify,
					null, null, false, true, 31);
			break;
		case 'JustifyRight' :
			B = new FCKToolbarButton('JustifyRight', FCKLang.RightJustify,
					null, null, false, true, 32);
			break;
		case 'JustifyFull' :
			B = new FCKToolbarButton('JustifyFull', FCKLang.BlockJustify, null,
					null, false, true, 33);
			break;
		case 'Style' :
			B = new FCKToolbarStyleCombo();
			break;
		case 'FontName' :
			B = new FCKToolbarFontsCombo();
			break;
		case 'FontSize' :
			B = new FCKToolbarFontSizeCombo();
			break;
		case 'FontFormat' :
			B = new FCKToolbarFontFormatCombo();
			break;
		case 'TextColor' :
			B = new FCKToolbarPanelButton('TextColor', FCKLang.TextColor, null,
					null, 45);
			break;
		case 'BGColor' :
			B = new FCKToolbarPanelButton('BGColor', FCKLang.BGColor, null,
					null, 46);
			break;
		case 'Find' :
			B = new FCKToolbarButton('Find', FCKLang.Find, null, null, null,
					null, 16);
			break;
		case 'Replace' :
			B = new FCKToolbarButton('Replace', FCKLang.Replace, null, null,
					null, null, 17);
			break;
		case 'Form' :
			B = new FCKToolbarButton('Form', FCKLang.Form, null, null, null,
					null, 48);
			break;
		case 'Checkbox' :
			B = new FCKToolbarButton('Checkbox', FCKLang.Checkbox, null, null,
					null, null, 49);
			break;
		case 'Radio' :
			B = new FCKToolbarButton('Radio', FCKLang.RadioButton, null, null,
					null, null, 50);
			break;
		case 'TextField' :
			B = new FCKToolbarButton('TextField', FCKLang.TextField, null,
					null, null, null, 51);
			break;
		case 'Textarea' :
			B = new FCKToolbarButton('Textarea', FCKLang.Textarea, null, null,
					null, null, 52);
			break;
		case 'HiddenField' :
			B = new FCKToolbarButton('HiddenField', FCKLang.HiddenField, null,
					null, null, null, 56);
			break;
		case 'Button' :
			B = new FCKToolbarButton('Button', FCKLang.Button, null, null,
					null, null, 54);
			break;
		case 'Select' :
			B = new FCKToolbarButton('Select', FCKLang.SelectionField, null,
					null, null, null, 53);
			break;
		case 'ImageButton' :
			B = new FCKToolbarButton('ImageButton', FCKLang.ImageButton, null,
					null, null, null, 55);
			break;
		default :
			alert(FCKLang.UnknownToolbarItem.replace(/%1/g, A));
			return null;
	};
	FCKToolbarItems.LoadedItems[A] = B;
	return B;
}
var FCKToolbar = function() {
	this.Items = new Array();
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKToolbar_Cleanup);
};
FCKToolbar.prototype.AddItem = function(A) {
	return this.Items[this.Items.length] = A;
};
FCKToolbar.prototype.AddButton = function(A, B, C, D, E, F) {
	if (typeof(D) == 'number')
		D = [this.DefaultIconsStrip, this.DefaultIconSize, D];
	var G = new FCKToolbarButtonUI(A, B, C, D, E, F);
	G._FCKToolbar = this;
	G.OnClick = FCKToolbar_OnItemClick;
	return this.AddItem(G);
};
function FCKToolbar_OnItemClick(item) {
	var oToolbar = item._FCKToolbar;
	if (oToolbar.OnItemClick)
		oToolbar.OnItemClick(oToolbar, item);
};
FCKToolbar.prototype.AddSeparator = function() {
	this.AddItem(new FCKToolbarSeparator());
};
FCKToolbar.prototype.Create = function(A) {
	if (this.MainElement) {
		if (this.MainElement.parentNode)
			this.MainElement.parentNode.removeChild(this.MainElement);
		this.MainElement = null;
	};
	var B = FCKTools.GetElementDocument(A);
	var e = this.MainElement = B.createElement('table');
	e.className = 'TB_Toolbar';
	e.style.styleFloat = e.style.cssFloat = (FCKLang.Dir == 'ltr'
			? 'left'
			: 'right');
	e.dir = FCKLang.Dir;
	e.cellPadding = 0;
	e.cellSpacing = 0;
	this.RowElement = e.insertRow(-1);
	var C;
	if (!this.HideStart) {
		C = this.RowElement.insertCell(-1);
		C.appendChild(B.createElement('div')).className = 'TB_Start';
	};
	for (var i = 0; i < this.Items.length; i++) {
		this.Items[i].Create(this.RowElement.insertCell(-1));
	};
	if (!this.HideEnd) {
		C = this.RowElement.insertCell(-1);
		C.appendChild(B.createElement('div')).className = 'TB_End';
	};
	A.appendChild(e);
};
function FCKToolbar_Cleanup() {
	this.MainElement = null;
	this.RowElement = null;
};
var FCKToolbarSeparator = function() {
};
FCKToolbarSeparator.prototype.Create = function(A) {
	FCKTools.AppendElement(A, 'div').className = 'TB_Separator';
}
var FCKToolbarBreak = function() {
};
FCKToolbarBreak.prototype.Create = function(A) {
	var B = FCKTools.GetElementDocument(A).createElement('div');
	B.className = 'TB_Break';
	B.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right';
	A.appendChild(B);
}
function FCKToolbarSet_Create(overhideLocation) {
	var oToolbarSet;
	var sLocation = overhideLocation || FCKConfig.ToolbarLocation;
	switch (sLocation) {
		case 'In' :
			document.getElementById('xToolbarRow').style.display = '';
			oToolbarSet = new FCKToolbarSet(document);
			break;
		default :
			FCK.Events.AttachEvent('OnBlur', FCK_OnBlur);
			FCK.Events.AttachEvent('OnFocus', FCK_OnFocus);
			var eToolbarTarget;
			var oOutMatch = sLocation.match(/^Out:(.+)\((\w+)\)$/);
			if (oOutMatch) {
				eToolbarTarget = eval('parent.' + oOutMatch[1]).document
						.getElementById(oOutMatch[2]);
			} else {
				oOutMatch = sLocation.match(/^Out:(\w+)$/);
				if (oOutMatch)
					eToolbarTarget = parent.document
							.getElementById(oOutMatch[1]);
			}
			;
			if (!eToolbarTarget) {
				alert('Invalid value for "ToolbarLocation"');
				return this._Init('In');
			}
			;
			if (oToolbarSet = eToolbarTarget.__FCKToolbarSet)
				break;
			var eToolbarIFrame = FCKTools.GetElementDocument(eToolbarTarget)
					.createElement('iframe');
			eToolbarIFrame.frameBorder = 0;
			eToolbarIFrame.width = '100%';
			eToolbarIFrame.height = '10';
			eToolbarTarget.appendChild(eToolbarIFrame);
			eToolbarIFrame.unselectable = 'on';
			var eTargetDocument = eToolbarIFrame.contentWindow.document;
			eTargetDocument.open();
			eTargetDocument
					.write('<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'
							+ document.getElementById('xToolbarSpace').innerHTML
							+ '</body></html>');
			eTargetDocument.close();
			eTargetDocument.oncontextmenu = FCKTools.CancelEvent;
			FCKTools.AppendStyleSheet(eTargetDocument, FCKConfig.SkinPath
							+ 'fck_editor.css');
			oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet(eTargetDocument);
			oToolbarSet._IFrame = eToolbarIFrame;
			if (FCK.IECleanup)
				FCK.IECleanup.AddItem(eToolbarTarget,
						FCKToolbarSet_Target_Cleanup);
	};
	oToolbarSet.CurrentInstance = FCK;
	FCK.AttachToOnSelectionChange(oToolbarSet.RefreshItemsState);
	return oToolbarSet;
};
function FCK_OnBlur(editorInstance) {
	var eToolbarSet = editorInstance.ToolbarSet;
	if (eToolbarSet.CurrentInstance == editorInstance)
		eToolbarSet.Disable();
};
function FCK_OnFocus(editorInstance) {
	var oToolbarset = editorInstance.ToolbarSet;
	var oInstance = editorInstance || FCK;
	oToolbarset.CurrentInstance.FocusManager
			.RemoveWindow(oToolbarset._IFrame.contentWindow);
	oToolbarset.CurrentInstance = oInstance;
	oInstance.FocusManager.AddWindow(oToolbarset._IFrame.contentWindow, true);
	oToolbarset.Enable();
};
function FCKToolbarSet_Cleanup() {
	this._TargetElement = null;
	this._IFrame = null;
};
function FCKToolbarSet_Target_Cleanup() {
	this.__FCKToolbarSet = null;
};
var FCKToolbarSet = function(A) {
	this._Document = A;
	this._TargetElement = A.getElementById('xToolbar');
	var B = A.getElementById('xExpandHandle');
	var C = A.getElementById('xCollapseHandle');
	B.title = FCKLang.ToolbarExpand;
	B.onclick = FCKToolbarSet_Expand_OnClick;
	C.title = FCKLang.ToolbarCollapse;
	C.onclick = FCKToolbarSet_Collapse_OnClick;
	if (!FCKConfig.ToolbarCanCollapse || FCKConfig.ToolbarStartExpanded)
		this.Expand();
	else
		this.Collapse();
	C.style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none';
	if (FCKConfig.ToolbarCanCollapse)
		C.style.display = '';
	else
		A.getElementById('xTBLeftBorder').style.display = '';
	this.Toolbars = new Array();
	this.IsLoaded = false;
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKToolbarSet_Cleanup);
};
function FCKToolbarSet_Expand_OnClick() {
	FCK.ToolbarSet.Expand();
};
function FCKToolbarSet_Collapse_OnClick() {
	FCK.ToolbarSet.Collapse();
};
FCKToolbarSet.prototype.Expand = function() {
	this._ChangeVisibility(false);
};
FCKToolbarSet.prototype.Collapse = function() {
	this._ChangeVisibility(true);
};
FCKToolbarSet.prototype._ChangeVisibility = function(A) {
	this._Document.getElementById('xCollapsed').style.display = A ? '' : 'none';
	this._Document.getElementById('xExpanded').style.display = A ? 'none' : '';
	if (FCKBrowserInfo.IsGecko) {
		FCKTools.RunFunction(window.onresize);
	}
};
FCKToolbarSet.prototype.Load = function(A) {
	this.Name = A;
	this.Items = new Array();
	this.ItemsWysiwygOnly = new Array();
	this.ItemsContextSensitive = new Array();
	this._TargetElement.innerHTML = '';
	var B = FCKConfig.ToolbarSets[A];
	if (!B) {
		alert(FCKLang.UnknownToolbarSet.replace(/%1/g, A));
		return;
	};
	this.Toolbars = new Array();
	for (var x = 0; x < B.length; x++) {
		var C = B[x];
		var D;
		if (typeof(C) == 'string') {
			if (C == '/')
				D = new FCKToolbarBreak();
		} else {
			D = new FCKToolbar();
			for (var j = 0; j < C.length; j++) {
				var E = C[j];
				if (E == '-')
					D.AddSeparator();
				else {
					var F = FCKToolbarItems.GetItem(E);
					if (F) {
						D.AddItem(F);
						this.Items.push(F);
						if (!F.SourceView)
							this.ItemsWysiwygOnly.push(F);
						if (F.ContextSensitive)
							this.ItemsContextSensitive.push(F);
					}
				}
			}
		};
		D.Create(this._TargetElement);
		this.Toolbars[this.Toolbars.length] = D;
	};
	FCKTools
			.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);
	if (FCK.Status != FCK_STATUS_COMPLETE)
		FCK.Events.AttachEvent('OnStatusChange', this.RefreshModeState);
	else
		this.RefreshModeState();
	this.IsLoaded = true;
	this.IsEnabled = true;
	FCKTools.RunFunction(this.OnLoad);
};
FCKToolbarSet.prototype.Enable = function() {
	if (this.IsEnabled)
		return;
	this.IsEnabled = true;
	var A = this.Items;
	for (var i = 0; i < A.length; i++)
		A[i].RefreshState();
};
FCKToolbarSet.prototype.Disable = function() {
	if (!this.IsEnabled)
		return;
	this.IsEnabled = false;
	var A = this.Items;
	for (var i = 0; i < A.length; i++)
		A[i].Disable();
};
FCKToolbarSet.prototype.RefreshModeState = function(A) {
	if (FCK.Status != FCK_STATUS_COMPLETE)
		return;
	var B = A ? A.ToolbarSet : this;
	var C = B.ItemsWysiwygOnly;
	if (FCK.EditMode == FCK_EDITMODE_WYSIWYG) {
		for (var i = 0; i < C.length; i++)
			C[i].Enable();
		B.RefreshItemsState(A);
	} else {
		B.RefreshItemsState(A);
		for (var i = 0; i < C.length; i++)
			C[i].Disable();
	}
};
FCKToolbarSet.prototype.RefreshItemsState = function(A) {
	var B = (A ? A.ToolbarSet : this).ItemsContextSensitive;
	for (var i = 0; i < B.length; i++)
		B[i].RefreshState();
};
var FCKDialog = new Object();
FCKDialog.OpenDialog = function(A, B, C, D, E, F, G, H) {
	var I = new Object();
	I.Title = B;
	I.Page = C;
	I.Editor = window;
	I.CustomValue = F;
	var J = FCKConfig.BasePath + 'fckdialog.html';
	this.Show(I, A, J, D, E, G, H);
};
FCKDialog.Show = function(A, B, C, D, E, F) {
	if (!F)
		F = window;
	FCKFocusManager.Lock();
	var G;
	try {
		G = F.showModalDialog(C, A, "dialogWidth:" + D + "px;dialogHeight:" + E
						+ "px;help:no;scroll:no;status:no");
	} catch (e) {
	};
	if (!G)
		alert(FCKLang.DialogBlocked);
	FCKFocusManager.Unlock();
};
var FCKMenuItem = function(A, B, C, D, E) {
	this.Name = B;
	this.Label = C || B;
	this.IsDisabled = E;
	this.Icon = new FCKIcon(D);
	this.SubMenu = new FCKMenuBlockPanel();
	this.SubMenu.Parent = A;
	this.SubMenu.OnClick = FCKTools.CreateEventListener(
			FCKMenuItem_SubMenu_OnClick, this);
	if (FCK.IECleanup)
		FCK.IECleanup.AddItem(this, FCKMenuItem_Cleanup);
};
FCKMenuItem.prototype.AddItem = function(A, B, C, D) {
	this.HasSubMenu = true;
	return this.SubMenu.AddItem(A, B, C, D);
};
FCKMenuItem.prototype.AddSeparator = function() {
	this.SubMenu.AddSeparator();
};
FCKMenuItem.prototype.Create = function(A) {
	var B = this.HasSubMenu;
	var C = FCKTools.GetElementDocument(A);
	var r = this.MainElement = A.insertRow(-1);
	r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item';
	if (!this.IsDisabled) {
		FCKTools.AddEventListenerEx(r, 'mouseover', FCKMenuItem_OnMouseOver,
				[this]);
		FCKTools.AddEventListenerEx(r, 'click', FCKMenuItem_OnClick, [this]);
		if (!B)
			FCKTools.AddEventListenerEx(r, 'mouseout', FCKMenuItem_OnMouseOut,
					[this]);
	};
	var D = r.insertCell(-1);
	D.className = 'MN_Icon';
	D.appendChild(this.Icon.CreateIconElement(C));
	D = r.insertCell(-1);
	D.className = 'MN_Label';
	D.noWrap = true;
	D.appendChild(C.createTextNode(this.Label));
	D = r.insertCell(-1);
	if (B) {
		D.className = 'MN_Arrow';
		var E = D.appendChild(C.createElement('IMG'));
		E.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif';
		E.width = 4;
		E.height = 7;
		this.SubMenu.Create();
		this.SubMenu.Panel.OnHide = FCKTools.CreateEventListener(
				FCKMenuItem_SubMenu_OnHide, this);
	}
};
FCKMenuItem.prototype.Activate = function() {
	this.MainElement.className = 'MN_Item_Over';
	if (this.HasSubMenu) {
		this.SubMenu.Show(this.MainElement.offsetWidth + 2, -2,
				this.MainElement);
	};
	FCKTools.RunFunction(this.OnActivate, this);
};
FCKMenuItem.prototype.Deactivate = function() {
	this.MainElement.className = 'MN_Item';
	if (this.HasSubMenu)
		this.SubMenu.Hide();
};/* Events */
function FCKMenuItem_SubMenu_OnClick(clickedItem, listeningItem) {
	FCKTools.RunFunction(listeningItem.OnClick, listeningItem, [clickedItem]);
};
function FCKMenuItem_SubMenu_OnHide(menuItem) {
	menuItem.Deactivate();
};
function FCKMenuItem_OnClick(ev, menuItem) {
	if (menuItem.HasSubMenu)
		menuItem.Activate();
	else {
		menuItem.Deactivate();
		FCKTools.RunFunction(menuItem.OnClick, menuItem, [menuItem]);
	}
};
function FCKMenuItem_OnMouseOver(ev, menuItem) {
	menuItem.Activate();
};
function FCKMenuItem_OnMouseOut(ev, menuItem) {
	menuItem.Deactivate();
};
function FCKMenuItem_Cleanup() {
	this.MainElement = null;
}
var FCKMenuBlock = function() {
	this._Items = new Array();
};
FCKMenuBlock.prototype.Count = function() {
	return this._Items.length;
};
FCKMenuBlock.prototype.AddItem = function(A, B, C, D) {
	var E = new FCKMenuItem(this, A, B, C, D);
	E.OnClick = FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick, this);
	E.OnActivate = FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,
			this);
	this._Items.push(E);
	return E;
};
FCKMenuBlock.prototype.AddSeparator = function() {
	this._Items.push(new FCKMenuSeparator());
};
FCKMenuBlock.prototype.RemoveAllItems = function() {
	this._Items = new Array();
	var A = this._ItemsTable;
	if (A) {
		while (A.rows.length > 0)
			A.deleteRow(0);
	}
};
FCKMenuBlock.prototype.Create = function(A) {
	if (!this._ItemsTable) {
		if (FCK.IECleanup)
			FCK.IECleanup.AddItem(this, FCKMenuBlock_Cleanup);
		this._Window = FCKTools.GetElementWindow(A);
		var B = FCKTools.GetElementDocument(A);
		var C = A.appendChild(B.createElement('table'));
		C.cellPadding = 0;
		C.cellSpacing = 0;
		FCKTools.DisableSelection(C);
		var D = C.insertRow(-1).insertCell(-1);
		D.className = 'MN_Menu';
		var E = this._ItemsTable = D.appendChild(B.createElement('table'));
		E.cellPadding = 0;
		E.cellSpacing = 0;
	};
	for (var i = 0; i < this._Items.length; i++)
		this._Items[i].Create(this._ItemsTable);
};/* Events */
function FCKMenuBlock_Item_OnClick(clickedItem, menuBlock) {
	FCKTools.RunFunction(menuBlock.OnClick, menuBlock, [clickedItem]);
};
function FCKMenuBlock_Item_OnActivate(menuBlock) {
	var oActiveItem = menuBlock._ActiveItem;
	if (oActiveItem && oActiveItem != this) {
		if (!FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu)
			menuBlock._Window.focus();
		oActiveItem.Deactivate();
	};
	menuBlock._ActiveItem = this;
};
function FCKMenuBlock_Cleanup() {
	this._Window = null;
	this._ItemsTable = null;
};
var FCKMenuSeparator = function() {
};
FCKMenuSeparator.prototype.Create = function(A) {
	var B = FCKTools.GetElementDocument(A);
	var r = A.insertRow(-1);
	var C = r.insertCell(-1);
	C.className = 'MN_Separator MN_Icon';
	C = r.insertCell(-1);
	C.className = 'MN_Separator';
	C.appendChild(B.createElement('DIV')).className = 'MN_Separator_Line';
	C = r.insertCell(-1);
	C.className = 'MN_Separator';
	C.appendChild(B.createElement('DIV')).className = 'MN_Separator_Line';
}
var FCKMenuBlockPanel = function() {
	FCKMenuBlock.call(this);
};
FCKMenuBlockPanel.prototype = new FCKMenuBlock();
FCKMenuBlockPanel.prototype.Create = function() {
	var A = this.Panel = (this.Parent && this.Parent.Panel ? this.Parent.Panel
			.CreateChildPanel() : new FCKPanel());
	A.AppendStyleSheet(FCKConfig.SkinPath + 'fck_editor.css');
	FCKMenuBlock.prototype.Create.call(this, A.MainNode);
};
FCKMenuBlockPanel.prototype.Show = function(x, y, A) {
	if (!this.Panel.CheckIsOpened())
		this.Panel.Show(x, y, A);
};
FCKMenuBlockPanel.prototype.Hide = function() {
	if (this.Panel.CheckIsOpened())
		this.Panel.Hide();
}
var FCKContextMenu = function(A, B, C) {
	var D = this._Panel = new FCKPanel(A, true);
	D.AppendStyleSheet(FCKConfig.SkinPath + 'fck_editor.css');
	D.IsContextMenu = true;
	var E = this._MenuBlock = new FCKMenuBlock();
	E.Panel = D;
	E.OnClick = FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,
			this);
	this._Redraw = true;
	this.SetMouseClickWindow(B || A);
};
FCKContextMenu.prototype.SetMouseClickWindow = function(A) {
	if (!FCKBrowserInfo.IsIE) {
		this._Document = A.document;
		this._Document.addEventListener('contextmenu',
				FCKContextMenu_Document_OnContextMenu, false);
	}
};
FCKContextMenu.prototype.AddItem = function(A, B, C, D) {
	var E = this._MenuBlock.AddItem(A, B, C, D);
	this._Redraw = true;
	return E;
};
FCKContextMenu.prototype.AddSeparator = function() {
	this._MenuBlock.AddSeparator();
	this._Redraw = true;
};
FCKContextMenu.prototype.RemoveAllItems = function() {
	this._MenuBlock.RemoveAllItems();
	this._Redraw = true;
};
FCKContextMenu.prototype.AttachToElement = function(A) {
	if (FCKBrowserInfo.IsIE)
		FCKTools.AddEventListenerEx(A, 'contextmenu',
				FCKContextMenu_AttachedElement_OnContextMenu, this);
	else
		A._FCKContextMenu = this;
};
function FCKContextMenu_Document_OnContextMenu(e) {
	var el = e.target;
	while (el) {
		if (el._FCKContextMenu) {
			FCKTools.CancelEvent(e);
			FCKContextMenu_AttachedElement_OnContextMenu(e, el._FCKContextMenu,
					el);
		};
		el = el.parentNode;
	}
};
function FCKContextMenu_AttachedElement_OnContextMenu(ev, fckContextMenu, el) {
	var eTarget = el || this;
	if (fckContextMenu.OnBeforeOpen)
		fckContextMenu.OnBeforeOpen.call(fckContextMenu, eTarget);
	if (fckContextMenu._MenuBlock.Count() == 0)
		return false;
	if (fckContextMenu._Redraw) {
		fckContextMenu._MenuBlock.Create(fckContextMenu._Panel.MainNode);
		fckContextMenu._Redraw = false;
	};
	fckContextMenu._Panel.Show(ev.pageX || ev.screenX, ev.pageY || ev.screenY,
			ev.currentTarget || null);
	return false;
};
function FCKContextMenu_MenuBlock_OnClick(menuItem, contextMenu) {
	contextMenu._Panel.Hide();
	FCKTools.RunFunction(contextMenu.OnItemClick, contextMenu, menuItem);
}
FCK.ContextMenu = new Object();
FCK.ContextMenu.Listeners = new Array();
FCK.ContextMenu.RegisterListener = function(A) {
	if (A)
		this.Listeners.push(A);
};
function FCK_ContextMenu_Init() {
	var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu(
			FCKBrowserInfo.IsIE ? window : window.parent, FCK.EditorWindow,
			FCKLang.Dir);
	oInnerContextMenu.OnBeforeOpen = FCK_ContextMenu_OnBeforeOpen;
	oInnerContextMenu.OnItemClick = FCK_ContextMenu_OnItemClick;
	var oMenu = FCK.ContextMenu;
	for (var i = 0; i < FCKConfig.ContextMenu.length; i++)
		oMenu
				.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));
};
function FCK_ContextMenu_GetListener(listenerName) {
	switch (listenerName) {
		case 'Generic' :
			return {
				AddItems : function(A, B, C) {
					A
							.AddItem(
									'Cut',
									FCKLang.Cut,
									7,
									FCKCommands.GetCommand('Cut').GetState() == FCK_TRISTATE_DISABLED);
					A
							.AddItem(
									'Copy',
									FCKLang.Copy,
									8,
									FCKCommands.GetCommand('Copy').GetState() == FCK_TRISTATE_DISABLED);
					A
							.AddItem(
									'Paste',
									FCKLang.Paste,
									9,
									FCKCommands.GetCommand('Paste').GetState() == FCK_TRISTATE_DISABLED);
				}
			};
		case 'Table' :
			return {
				AddItems : function(A, B, C) {
					var D = (C == 'TABLE');
					var E = (!D && FCKSelection.HasAncestorNode('TABLE'));
					if (E) {
						A.AddSeparator();
						var F = A.AddItem('Cell', FCKLang.CellCM);
						F.AddItem('TableInsertCell', FCKLang.InsertCell, 58);
						F.AddItem('TableDeleteCells', FCKLang.DeleteCells, 59);
						F.AddItem('TableMergeCells', FCKLang.MergeCells, 60);
						F.AddItem('TableSplitCell', FCKLang.SplitCell, 61);
						F.AddSeparator();
						F.AddItem('TableCellProp', FCKLang.CellProperties, 57);
						A.AddSeparator();
						F = A.AddItem('Row', FCKLang.RowCM);
						F.AddItem('TableInsertRow', FCKLang.InsertRow, 62);
						F.AddItem('TableDeleteRows', FCKLang.DeleteRows, 63);
						A.AddSeparator();
						F = A.AddItem('Column', FCKLang.ColumnCM);
						F
								.AddItem('TableInsertColumn',
										FCKLang.InsertColumn, 64);
						F.AddItem('TableDeleteColumns', FCKLang.DeleteColumns,
								65);
					};
					if (D || E) {
						A.AddSeparator();
						A.AddItem('TableDelete', FCKLang.TableDelete);
						A.AddItem('TableProp', FCKLang.TableProperties, 39);
					}
				}
			};
		case 'Link' :
			return {
				AddItems : function(A, B, C) {
					var D = (C == 'A' || FCKSelection.HasAncestorNode('A'));
					if (D
							|| FCK.GetNamedCommandState('Unlink') != FCK_TRISTATE_DISABLED) {
						A.AddSeparator();
						if (D)
							A.AddItem('Link', FCKLang.EditLink, 34);
						A.AddItem('Unlink', FCKLang.RemoveLink, 35);
					}
				}
			};
		case 'Image' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'IMG' && !B.getAttribute('_fckfakelement')) {
						A.AddSeparator();
						A.AddItem('Image', FCKLang.ImageProperties, 37);
					}
				}
			};
		case 'Anchor' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'IMG' && B.getAttribute('_fckanchor')) {
						A.AddSeparator();
						A.AddItem('Anchor', FCKLang.AnchorProp, 36);
					}
				}
			};
		case 'Flash' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'IMG' && B.getAttribute('_fckflash')) {
						A.AddSeparator();
						A.AddItem('Flash', FCKLang.FlashProperties, 38);
					}
				}
			};
		case 'Form' :
			return {
				AddItems : function(A, B, C) {
					if (FCKSelection.HasAncestorNode('FORM')) {
						A.AddSeparator();
						A.AddItem('Form', FCKLang.FormProp, 48);
					}
				}
			};
		case 'Checkbox' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT' && B.type == 'checkbox') {
						A.AddSeparator();
						A.AddItem('Checkbox', FCKLang.CheckboxProp, 49);
					}
				}
			};
		case 'Radio' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT' && B.type == 'radio') {
						A.AddSeparator();
						A.AddItem('Radio', FCKLang.RadioButtonProp, 50);
					}
				}
			};
		case 'TextField' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT'
							&& (B.type == 'text' || B.type == 'password')) {
						A.AddSeparator();
						A.AddItem('TextField', FCKLang.TextFieldProp, 51);
					}
				}
			};
		case 'HiddenField' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT' && B.type == 'hidden') {
						A.AddSeparator();
						A.AddItem('HiddenField', FCKLang.HiddenFieldProp, 56);
					}
				}
			};
		case 'ImageButton' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT' && B.type == 'image') {
						A.AddSeparator();
						A.AddItem('ImageButton', FCKLang.ImageButtonProp, 55);
					}
				}
			};
		case 'Button' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'INPUT'
							&& (B.type == 'button' || B.type == 'submit' || B.type == 'reset')) {
						A.AddSeparator();
						A.AddItem('Button', FCKLang.ButtonProp, 54);
					}
				}
			};
		case 'Select' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'SELECT') {
						A.AddSeparator();
						A.AddItem('Select', FCKLang.SelectionFieldProp, 53);
					}
				}
			};
		case 'Textarea' :
			return {
				AddItems : function(A, B, C) {
					if (C == 'TEXTAREA') {
						A.AddSeparator();
						A.AddItem('Textarea', FCKLang.TextareaProp, 52);
					}
				}
			};
		case 'BulletedList' :
			return {
				AddItems : function(A, B, C) {
					if (FCKSelection.HasAncestorNode('UL')) {
						A.AddSeparator();
						A.AddItem('BulletedList', FCKLang.BulletedListProp, 27);
					}
				}
			};
		case 'NumberedList' :
			return {
				AddItems : function(A, B, C) {
					if (FCKSelection.HasAncestorNode('OL')) {
						A.AddSeparator();
						A.AddItem('NumberedList', FCKLang.NumberedListProp, 26);
					}
				}
			};
	}
};
function FCK_ContextMenu_OnBeforeOpen() {
	FCK.Events.FireEvent("OnSelectionChange");
	var oTag, sTagName;
	if (oTag = FCKSelection.GetSelectedElement())
		sTagName = oTag.tagName;
	var oMenu = FCK.ContextMenu._InnerContextMenu;
	oMenu.RemoveAllItems();
	var aListeners = FCK.ContextMenu.Listeners;
	for (var i = 0; i < aListeners.length; i++)
		aListeners[i].AddItems(oMenu, oTag, sTagName);
};
function FCK_ContextMenu_OnItemClick(item) {
	FCK.Focus();
	FCKCommands.GetCommand(item.Name).Execute();
}
var FCKPlugin = function(A, B, C) {
	this.Name = A;
	this.BasePath = C ? C : FCKConfig.PluginsPath;
	this.Path = this.BasePath + A + '/';
	if (!B || B.length == 0)
		this.AvailableLangs = new Array();
	else
		this.AvailableLangs = B.split(',');
};
FCKPlugin.prototype.Load = function() {
	if (this.AvailableLangs.length > 0) {
		var A;
		if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code) >= 0)
			A = FCKLanguageManager.ActiveLanguage.Code;
		else
			A = this.AvailableLangs[0];
		LoadScript(this.Path + 'lang/' + A + '.js');
	};
	LoadScript(this.Path + 'fckplugin.js');
}
var FCKPlugins = FCK.Plugins = new Object();
FCKPlugins.ItemsCount = 0;
FCKPlugins.Items = new Object();
FCKPlugins.Load = function() {
	var A = FCKPlugins.Items;
	for (var i = 0; i < FCKConfig.Plugins.Items.length; i++) {
		var B = FCKConfig.Plugins.Items[i];
		var C = A[B[0]] = new FCKPlugin(B[0], B[1], B[2]);
		FCKPlugins.ItemsCount++;
	};
	for (var s in A)
		A[s].Load();
	FCKPlugins.Load = null;
}
